2011-10-18 90 views
0

我想傳遞一個參數給我的服務,代碼運行但服務永遠不會收到參數?這個調用起作用了,我只是簡單地添加變量,然後將其返回,當我找回它時,我發現web服務從未收到它!Android ksoap2參數問題

感謝您的幫助

final String SOAP_ACTION = "http://NathofGod.com/GetCategoryById"; 
    final String METHOD_NAME = "GetCategoryById"; 
    final String NAMESPACE = " http://NathofGod.com/"; 
    final String URL = "http://10.0.2.2:4021/Service1.asmx"; 

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 

PropertyInfo pi1 = new PropertyInfo(); 
     pi1.setName("name"); 
     pi1.setValue("the name"); 
     pi1.setType(String.class); 
     pi1.setNamespace(NAMESPACE); 
     request.addProperty(pi1); 

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
     envelope.dotNet = true; 
     envelope.setOutputSoapObject(request); 

     HttpTransportSE conn = new HttpTransportSE(URL); 

     try 
     { 
      conn.call(SOAP_ACTION, envelope); 
      SoapObject response = (SoapObject)envelope.getResponse(); 
     } 

     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 

回答

1

不知道爲什麼不工作,但我記得使用它與

request.addProperty("name", "my_Name"); 

,它工作得很好,否則你可能會想檢查服務器端...

+0

我的服務器端代碼是真正的簡單 – NathofGod

+0

[的WebMethod] 公共字符串的HelloWorld(INT ID) { 如果(ID> 0) { 回報的 「Hello Android的世界」; } else { return「Why Wont You WOOORK」; } } – NathofGod

0

我清理代碼一點點,並把它放在一個功能。我不確定是否有什麼不同,但這個代碼的作品。感謝您的迴應。

公共SoapObject皁()拋出IOException異常,XmlPullParserException {

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
    request.addProperty("name", "myname"); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    envelope.setOutputSoapObject(request); 
    HttpTransportSE conn = new HttpTransportSE(URL); 

    conn.call(SOAP_ACTION, envelope); //send request 
    SoapObject result=(SoapObject)envelope.getResponse(); 
    return result; 
} 
0

最終字符串NAMESPACE = 「http://NathofGod.com/」;

更改爲

final String NAMESPACE = "http://NathofGod.com/"; 

取出空的空間,然後作出命名空間,因爲它是在你的請求XML。請注意,它也是區分大小寫的。

1

這行代碼是我的問題! !!

envelope.dotNet = true; 

REMOVE IT