android: ksoap2 org.xmlpull.v1.XmlPullParserException: ожидается: исключение START_TAG - PullRequest
0 голосов
/ 26 сентября 2011

Я пытаюсь получить ответ от веб-службы.Однако я получаю некоторые ошибки исключения: в основном это

org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <html>@1:6 in java.io.InputStreamReader@40524b78) 

На самом деле я пытаюсь получить доступ к методу веб-службы, и веб-служба должна возвращать две строки (скажем, String1 и String2).Кроме того, я должен предоставить или передать два параметра (скажем, параметр 1 и параметр 2, где параметр 1 должен быть целым числом, а параметр 2 должен быть строкой). Вот мой код

public class MyWebService extends Activity {

private static final String SOAP_ACTION ="http://www.mywebsite.com/myMethod";
private static final String METHOD_NAME = "MyMethod";
private static final String NAMESPACE = "http://www.myNamespace/";
    private static final String URL = "http://mysession.com/myservice.asmx?WSDL";


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    try {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

        PropertyInfo pi = new PropertyInfo();   
        pi.setName("Parameter 1");
        pi.setValue(1);
        pi.setType(pi.INTEGER_CLASS);
        request.addProperty(pi);

        PropertyInfo pi2 = new PropertyInfo();  
        pi2.setName("Parameter 2");
        pi2.setValue("Any string");
        pi2.setType(pi2.STRING_CLASS);
        request.addProperty(pi2);

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

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.call(SOAP_ACTION, envelope);                   
        //SoapObject result=(SoapObject)envelope.getResponse();             
        SoapPrimitive  result = (SoapPrimitive) envelope.getResponse();
        String resultData = result.toString();

        //String string1=result.getProperty(0).toString();
        //String string2=result.getProperty(1).toString();

        Log.v("WEBSERVICE","RESPONSE: "+resultData);
    } catch (Exception e) {
        e.printStackTrace();    

    }        
}

}

Может кто-нибудь сказать мне, если я делаю что-то не так здесь ... Еще один очень важный вопрос: Может ли кто-нибудь сказать мне, почему я не могу использовать метод getProperty (0) или getProperty (1) с результатом здесь.Я должен получить две строки в ответ от веб-службы, но я не могу использовать getProperty (index) с SoapPrimitive .. Все предложения приветствуются Спасибо

1 Ответ

0 голосов
/ 23 апреля 2012

Я не уверен, что это именно то решение, которое вам нужно, но это работает для меня, у меня была такая же проблема раньше, но было 5 необходимых параметров, и я просто добавил 3 параметра, используя SoapObject, поэтому он выдавал этот тип ошибки, поэтому убедитесь, что вы добавили все необходимые параметры, используя request.addProperty ("test", "test") перед вызовом этого веб-сервиса.

...