Не удается вызвать метод веб-службы C # .net из клиента Android - PullRequest
3 голосов
/ 14 августа 2011

Я пытаюсь вызвать веб-сервис из Android-клиента с помощью библиотеки ksoap.

Вот мой код 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());
        }
}

А вот мой метод веб-сервиса, который написан в файле Test.asmx

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

При выполнении строки androidHttpTransport.call(SOAP_ACTION, envelope); выдается следующее исключение

org.xmlpull.v1.XmlPullParserException: ожидается: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (позиция: START_TAG @ 2: 44 в java.io.InputStreamReader@43e593c8)

Пожалуйста, помогите ..

Ответы [ 2 ]

2 голосов
/ 22 декабря 2011

Это рабочий код

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 голосов
/ 23 сентября 2011

Вызов, который вы выполняете, не произойдет. какой тип возврата веб-службы? Мы можем передать значения и назвать это.

...