1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

dotNet-WebService Problem

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Neeldarax, 19.10.2011.

  1. Neeldarax, 19.10.2011 #1
    Neeldarax

    Neeldarax Threadstarter Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hallo zusammen,

    ich kriege diese Fehlermeldung:
    Code:
    Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: [B]Die Anforderung konnte vom Server nicht verarbeitet werden. ---> Die Auflistung ist schreibgeschützt.[/B]
        at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178)
        at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108)
        at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
        at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
        at $Proxy28.getInformation(Unknown Source)
        at Test.main(Test.java:22).
    Ich werde daraus schlau. Der Webservice geht unter vb.dotnet.

    Sagt das jemanden was?

    regards

    ps.: Der Fehler kommt mit ksoap2-android-assembly-2.5.8-jar-with-dependencies.jar(Android) und auch mit Java sdk 6(Java)
     
  2. Thyrion, 19.10.2011 #2
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Der Service auf dem Server versucht irgendwelche Objekte aus einer (schreibgeschützten) Collection zu entfernen oder zu verändern (z.B. Page.Request). Ohne nähere Informationen zum Code dort, wird eine weitere Diagnose schwer ;)
     
  3. Neeldarax, 19.10.2011 #3
    Neeldarax

    Neeldarax Threadstarter Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    Hi,

    dachte, könnte so jemanden bekannt sein.
    Ich sag ma, der Webservice- und der Client-Code weißt keine Fehler auf, lasse mich aber einen besseren belehren...

    Code:
    POST /WIS.asmx HTTP/1.1
     Host: maskierter.host.de
     Content-Type: text/xml; charset=utf-8
     Content-Length: length
     SOAPAction: "http://url.de:8080/GetInformation" 
     <?xml version="1.0" encoding="utf-8"?> 
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">  
     <soap:Body>   
      <GetInformation xmlns="http://url.de:8080/"> 
         <method>string</method>   
        <params>string</params>    
     </GetInformation> 
      </soap:Body>
     </soap:Envelope>
    host, url.. geändert

    Für Javaclient.. wsimport usw... und dann.
    Code:
            WIS wis = new WIS();
    
            WISSoap wisSoap = wis.getWISSoap();
            System.out.println(wisSoap);
            System.err.println(wisSoap.getInformation("methode",
                    "param=p\\param2=p2"));
    Für Androidclient
    Code:
      final String METHOD_NAME = "GetInformation";
            final String NAMESPACE = "http://url.de:8080/";
            final String SOAP_ACTION = "\"" + NAMESPACE + METHOD_NAME + "\"";
            final String URL = "http://wis.maskierte.url.de/WIS.asmx?WSDL";
    
            SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
            request.addProperty("method", "methode");
            request.addProperty("params", "param...");
    
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                    SoapEnvelope.VER11);
    
            envelope.dotNet = true;
            envelope.setOutputSoapObject(request);
    
            AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
            SoapObject result = null;
    
            try {
    
                httpTransport.call(SOAP_ACTION, envelope);
                result = (SoapObject) envelope.getResponse();
            }catch (Exception e){
            //..
            }
            //..
    hab ich was vergessen? ^^
    Die URLs sind im Browser erreichbar. Und wie gesagt, vom anderen Projekt, leider kein Java-Projekt, wird das bereits genutzt.

    edit.:
    android exc
    Code:
    10-19 14:04:46.765: ERROR/error(2873): SoapFault - faultcode: 'soap:Server' faultstring: 'Die Anforderung konnte vom Server nicht verarbeitet werden. ---> Die Auflistung ist schreibgeschützt.' faultactor: 'null' detail: org.kxml2.kdom.Node@45a58078
    10-19 14:04:46.765: ERROR/error(2873):     at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:136)
    10-19 14:04:46.765: ERROR/error(2873):     at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
    10-19 14:04:46.765: ERROR/error(2873):     at org.ksoap2.transport.Transport.parseResponse(Transport.java:96)
    10-19 14:04:46.765: ERROR/error(2873):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:189)
    10-19 14:04:46.765: ERROR/error(2873):     at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
    
     
    Zuletzt bearbeitet: 19.10.2011
  4. Thyrion, 19.10.2011 #4
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Der Fehler tritt aber beim Webserver auf und nicht auf Client-Seite. Demnach stimmt irgendwas mit dem Webservice selbst nicht. Dort müsstest du in den Code hineinschauen (oder noch besser direkt rein debuggen, wenn du die Möglichkeit dazu hast).

    Wieso schreibst du eigentlich "?WSDL" in die URL, wenn du den Service benutzen möchtest und dir die Definition eigentlich egal sein könnte?
     
  5. Neeldarax, 19.10.2011 #5
    Neeldarax

    Neeldarax Threadstarter Erfahrener Benutzer

    Beiträge:
    170
    Erhaltene Danke:
    31
    Registriert seit:
    07.12.2010
    "?WSDL" braucht man in den meisten Fällen nicht.(Hab auch selber keine Fäller eerlebt, wo man dies brauchte) Aber es sollte auch nicht stören...

    Jedenfalls zum Fehler:
    NameValueCollection.Set-Methode (System.Collections.Specialized)

    Da kommt die Fehlermeldung her ^^
    Danke für den Tipp. Reinschauen kann ich, aber debuggen nicht. Kann aber möglichen Fehlerquellen sehen.

    Die Frage ist auch, könnte es Probleme mit "\\" als String übergabe geben?
     
  6. Thyrion, 19.10.2011 #6
    Thyrion

    Thyrion Ehrenmitglied

    Beiträge:
    11,849
    Erhaltene Danke:
    2,452
    Registriert seit:
    21.07.2009
    Phone:
    Nexus 5X
    Unwahrscheinlich, das müsste bei Problemen eine andere Exception geben (und müsste sowieso nochmal intern gekapselt/escaped werden).
     

Diese Seite empfehlen