2012-04-07 8 views
0

ich den folgenden Code bin mit dem webserivce zugreifenAndroid accesing Seife Service

public SoapObject getWeather() throws Exception 
    { 
     SoapObject request = new SoapObject("http://www.freewebservicesx.com", "GetCurrentGoldPrice"); 
     //request.addProperty("PlaceName", city); 
     request.addProperty("Username","myusername"); 
     request.addProperty("Password","pass"); 
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.setOutputSoapObject(request); 
     // It seems that it is a .NET Web service because it doesn't work without next line 
     envelope.dotNet = true; 

     HttpTransportSE transport = new HttpTransportSE("http://www.freewebservicesx.com/GetGoldPrice.asmx"); 
     transport.call("http://freewebservicesx.com/GetCurrentGoldPrice", envelope); 

     return (SoapObject) envelope.getResponse(); 
    } 


    public List<CharSequence> getWeatherForecast() 
    { 
     SoapObject obj = null; 
     try { 
      obj = getWeather(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
//error is being thrown here 
      Log.e("error",e.getMessage()); 
     } 
     SoapObject details = (SoapObject) obj.getProperty("GetCurrentGoldPriceResult"); 

     List<CharSequence> list = new ArrayList<CharSequence>(details.getPropertyCount()); 
     for (int i = 0; i < details.getPropertyCount(); i++) { 
      Object property = details.getProperty(i); 
      if (property instanceof SoapObject) { 
       SoapObject weather = (SoapObject) property; 
       String day = weather.getProperty("string").toString(); 
       String min = weather.getProperty("string").toString(); 
       //String max = weather.getProperty("MaxTemperatureF").toString(); 
       Log.v("ts is whait ai am ",day); 

       list.add(day + " :: " + min); 
      } 
     } 
     return list; 
    } 

http://www.freewebservicesx.com/GetGoldPrice.asmx?op=GetCurrentGoldPrice die Details des Dienstes enthält. Ich bekomme einen Fehler in der Bindertransaktion.

04-07 11: 10: 01.405: W/System.err (651): SoapFault - Fehlercode: 'soap: Server' Fehlerzeichenfolge: 'System.Web.Services.Protocols.SoapException: Server konnte Anfrage nicht verarbeiten . ---> System.ArgumentNullException: Wert kann nicht null sein.

+0

http://stackoverflow.com/questions/10051538/using-webservices-in-android Fragen Sie nicht die gleichen Fragen zweimal aktualisieren Sie nur die vorherige bitte –

+0

Okay. Aber was ist das Problem? Warum wird der Preis nicht zurückerstattet? – user1092042

Antwort

1

Bitte ändern Sie die Zeile:

envelope.dotNet = "true"; 

zu

envelope.dotNet = "false"; 

weil "true" immer einen Nullwert an Webserver senden, stellen Sie so eine falsche ..

und andere Sache .. in Ihrem Code

request.addProperty("Username","myusername"); 

request.addProperty("Password","pass"); 

Überprüfen Sie Ihren Parameternamen (Benutzername, Passwort) sowohl auf dem Client- als auch auf dem Server-Webservice, der identisch sein muss, dh, die Groß-/Kleinschreibung muss beachtet werden.

Ich hoffe Code hilft Ihnen.

+0

Es funktioniert immer noch nicht. Können Sie meine Parameter überprüfen und mir sagen, ob es richtig ist. Der Link ist in meiner Frage. – user1092042

+0

string in Ihrem Link "UserName" N ist Hauptstadt, Benutzer "Username" .., ich Ding dieser Fehler .. –

+0

Ich habe das versucht. Es funktioniert immer noch nicht-soap: Server 'failstring:' System.Web.Services.Protocols.SoapException: Server konnte Anfrage nicht verarbeiten. ---> (ich denke, es ist etwas falsch in der Art, wie ich es callin – user1092042