2011-09-15 89 views
1

我得到了wsdl和URL,並且服務器是用C++編寫的; 我在android中使用KSoap2來訪問該方法,但總是打印出 :「Method'methodname'not implemented」!!! 任何人都可以幫我嗎? 在此先感謝!Android:關於ksoap2和webservice

+0

的基礎知識你可能不指定要執行的方法名稱。 –

+1

@Pro我指定了正確的方法名稱。但... –

回答

1

看到這裏KSOAP的簡單的例子可以幫助http://vimeo.com/9633556

+0

@hotverypicy謝謝,這與服務器使用的是什麼樣的語言有關係嗎? –

+0

ya,絕對假設如果你想在android中使用c,C++文件,那麼你必須創建本地庫 –

+0

@hotverypicy你的意思是我需要從wsdl文件生成Java代碼(我在android中使用java)? –

0
private static final String NAMESPACE = "http://tempuri.org/"; 
private static final String URL = "http://216.128.29.26/webservices/TempConvert.asmx"; 
private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit"; 
private static final String METHOD_NAME = "CelsiusToFahrenheit" 

你應該如上規定必要的實地。

+1

是的,我只是寫他們如上 –

+0

然後你必須缺少一些代碼或缺少參數。 –

0
private static final String NAMESPACE = "http://tempuri.org/"; 
private static final String URL = "http://216.128.29.26/webservices/TempConvert.asmx"; 
private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit"; 
private static final String METHOD_NAME = "CelsiusToFahrenheit"; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView tv; 
    tv = (TextView) findViewById(R.id.tv); 
    tv.setText(ws()); 
} 
public String ws() { 
    String result = ""; 
    try 
    { 
     SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
     request.addProperty("Celsius", "32"); 

     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
       SoapEnvelope.VER11); 

     envelope.dotNet = true; 

     envelope.setOutputSoapObject(request); 

     HttpTransportSE ht = new HttpTransportSE(URL); 
     ht.call(SOAP_ACTION, envelope); 

     if(envelope.getResponse()!=null){ 
      SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
      result = "FeranHit : " + response.toString(); 
     } 
    } 
    catch (Exception e) 
    { 
     result = e.getMessage(); 
    } 
    return result; 
} 

看到這是我的代碼。並得到完整的結果。這只是ksoap2的測試程序。

我在這裏沒有包含任何庫。

+0

謝謝Pro.But我真的寫了像你這樣的代碼。但它不能工作。我更改methodName爲(但不是),它的上帝。爲什麼? PS:我使用「....?wsdl」 –

+0

幫助永遠不會傷害.. :)現在,你正在得到哪種錯誤?你能告訴我嗎? –

1

您是否正確地創建了您的請求和SoapAction

請嘗試下面的示例(它是一個具有0個參數的公共Web服務),並查看它是否適用於您。

private static final String WSDL_URL = "http://wsf.cdyne.com/WeatherWS/Weather.asmx?WSDL"; 
private static final String WS_NAMESPACE = "http://ws.cdyne.com/WeatherWS/"; 
private static final String WS_METHOD_NAME = "GetWeatherInformation"; 

// 1. Creating SOAP request with no arguments 
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
envelope.setOutputSoapObject(new SoapObject(WS_NAMESPACE, WS_METHOD_NAME)); 

// 2. Create a HTTP Transport object to send the web service request 
HttpTransportSE httpTransport = new HttpTransportSE(WSDL_URL); 
httpTransport.debug = true; // allows capture of raw request/respose in Logcat 

// 3. Make the web service invocation 
httpTransport.call(WS_NAMESPACE + WS_METHOD_NAME, envelope); 

Log.d(TAG, "HTTP REQUEST:\n" + httpTransport.requestDump); 
Log.d(TAG, "HTTP RESPONSE:\n" + httpTransport.responseDump); 

看一看這個詳細的教程解釋using kSOAP2 with Android