无法从Android客户端调用C# .net Web服务方法

3

我正在尝试使用ksoap库从Android客户端调用Web服务。

这是我的Android代码:

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://192.16.0.230/WebService/Test.asmx";
TextView tv;

public void call()
{
    try {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

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

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

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.call(SOAP_ACTION, envelope);

        String result = (String)envelope.getResponse();

        tv.setText(result);
    } catch (Exception e) {
        tv.setText("exception :" + e.getLocalizedMessage());
        }
}

以下是我的Web服务方法,代码写在Test.asmx文件中:

[WebMethod]
public string HelloWorld(string name)
{
    return "Hello World" + name;
}

当执行androidHttpTransport.call(SOAP_ACTION, envelope);这行代码时,会抛出以下异常:

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG @2:44 in java.io.InputStreamReader@43e593c8)

请帮忙解决。
2个回答

2
这是可用的代码。
private static final String SOAP_ACTION = "http://tempuri.org";
private static final String METHOD_NAME = "HelloWorld";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://192.16.0.230/WebService/Test.asmx?wsdl";
/*write ?wsdl only for local system testing*/

TextView tv;

public void call()
{
    try {

        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

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

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

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,20000);//Updated

        androidHttpTransport.call(SOAP_ACTION, envelope);
SoapPrimitive  resultsRequestSOAP = (SoapPrimitive) envelope.getResponse();
        String result = resultsRequestSOAP.toString();

        tv.setText(result);
    } catch (Exception e) {
        tv.setText("exception :" + e.getLocalizedMessage());
        }
}

0

您正在执行的调用将不会发生。 Web服务返回类型是什么?我们可以传递值并进行调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接