2010-10-08 118 views
1

如何使用.net Web服務使用android?在Android中訪問C#.net web服務

我的代碼是這樣的...

package Webservices.pck; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 
import android.widget.TextView; 
import android.app.Activity; 
import android.os.Bundle; 

public class Webservices extends Activity 
{ 
private static final String SOAP_ACTION = "http://tempuri.org/HelloWorld"; 
private static final String METHOD_NAME = "HelloWorld"; 
private static final String NAMESPACE = "http://tempuri.org/"; 
private static final String URL = "http://ipaddress/Service1.asmx"; 
//private Object resultRequestSOAP = null; 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     TextView tv = new TextView(this); 
     try 
     { 
      SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); 
      SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.setOutputSoapObject(request); 

      HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

      androidHttpTransport.debug = true; 
      envelope.dotNet = true; 
      androidHttpTransport.call(SOAP_ACTION, envelope); 

      SoapObject resultRequestSOAP = (SoapObject)envelope.bodyIn; 
      String result = (String)resultRequestSOAP.getProperty(0).toString(); 
      tv.setText(result); 
      this.setContentView(tv); 
     } 
     catch (Exception aE) 
     { 
      tv.setText(aE.toString()); 
      this.setContentView(tv); 
     } 
    } 
} 

在這段代碼中我使用。

String URL = "http://ipaddress/Service1.asmx"; 

然後錯誤: - org.xmlpull.v1.xmlPullParserException: expected:START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope(position:START_TAG<html>@1:6 in [email protected])

回答

1

您正在訪問的HTML頁面,而不是一個SOAP服務。解析器Exception已經告訴你什麼是錯的。

你得到的數據是這樣

<html><body>... </body></html> 

而頁面應該返回類似

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
     <YourFunctionToCall... /> 
    </soapenv:Body> 
</soapenv:Envelope> 

也許你有你的網址中有錯字,或某種身份驗證或一些其他類型的錯誤,以便它返回一個HTML錯誤而不是Soap Request/Response。