【问题标题】:"org.xmlpull.v1.XmlPullParserException: expected: START_TAG" error“org.xmlpull.v1.XmlPullParserException:预期:START_TAG”错误
【发布时间】:2011-11-18 00:20:30
【问题描述】:

我试图在 android 中将 ksoap2 与 web 服务一起使用,但我认为我无法从 web 服务中得到响应。任何人都知道我为什么会收到此错误? “org.xmlpull.v1.XmlPullParserException:预期:START_TAG”

我的代码是:

public class ANDROIDsapActivity extends Activity {
    /** Called when the activity is first created. */
    private static final String NAMESPACE = "urn:sap-com:document:sap:soap:functions:mc-style";
    private static final String URL = "http://192.168.2.5:8000/sap/bc/srt/wsdl/bndg_E0DFBFD4F407C3F1A6A000155D02060A/wsdl11/allinone/ws_policy/document?sap-client=500";    
    private static final String SOAP_ACTION = "zws_get_customer";
    private static final String METHOD_NAME = "ZfGetCustomers";
        TextView tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView) findViewById(R.id.textView1);

        SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
        Request.addProperty("IM_NAME","M");

        SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        soapEnvelope.setOutputSoapObject(Request);

        soapEnvelope.encodingStyle = SoapSerializationEnvelope.ENC2003;
        soapEnvelope.bodyOut = Request;
        soapEnvelope.dotNet = true;
        soapEnvelope.encodingStyle = SoapSerializationEnvelope.XSD;

       // AndroidHttpTransport aht = new AndroidHttpTransport(URL);
        HttpTransportSE aht = new HttpTransportSE(URL);
        aht.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
        List<HeaderProperty> headers = new ArrayList<HeaderProperty>();
        headers.add(new HeaderProperty("Authorization",  "basic " +
                Base64.encode("username:password".getBytes())));

        try {
            aht.call(SOAP_ACTION, soapEnvelope,headers);
            SoapPrimitive resultString = (SoapPrimitive) soapEnvelope.getResponse();
            tv.setText("Status: " + resultString);
        } catch (Exception e) {
            // TODO: handle exception
            tv.setText(e.toString());
        }
    }
}

我的完整错误是:

org.xmlpull.v1.XmlPullParserException: expected: START_TAG  
{http://schemas.xmlsoap.org/soap/envelope/} Envelope  
(position:START_TAG <{http://schemas.xmlsoap.org/wsdl/}wsdl:definitions  
targetNamespace='urn:sap-com:document:sapsoap:functions:mc-style'>  
@1:630 in java.io.InputStreamReader@43e50a10

我陷入了这个错误,我无法继续前进。 请帮忙!

编辑:我已经解决了这个问题。请阅读下面的评论和答案我的答案。 我希望我能以某种方式对某人有所帮助。

【问题讨论】:

  • 请检查您的 SOAP_ACTION。我认为应该是 NAMESPACE+"/"+METHOD_NAME。如果这不起作用,请告诉我,我会进一步帮助您。
  • 我仍然遇到同样的错误。我在想我的网址不起作用。因为在我的网络服务中它不像我的 URL。它不是IP,而是网址。您认为这可能是问题所在吗?
  • 请检查如果您在浏览器中触发 URL,它应该返回 WSDL 或与该服务相关的任何消息。
  • 我试图更改 SOAP_ACTION 但我认为我的错误与 SOAP_ACTION 无关,因为无论我给 SOAP_ACTION 赋予什么值,我都会得到相同的异常/错误。我什至给 SOAP_ACTION 赋值为 null 并得到了同样的错误。我的代码停留在这一行:aht.call(SOAP_ACTION,soapEnvelope,headers);
  • 为什么要使用headers,是否有任何证书用于验证某些东西?如果没有,请不要使用它们。否则您必须使用HttpsTransportSE方法进行验证。

标签: java android xml parsing exception


【解决方案1】:

我只是通过更改 Web 服务样式解决了我的问题。如果要集成 SAP 和 android,请使用 Restful webservice 系统而不是 SOAP。

【讨论】:

  • 嗨,我也遇到了同样的问题,但我不明白你在说什么。我在 android 中面临这个问题。请你能解释清楚吗..
  • 您好 Sando,如果您尝试将 SAP Web 服务与 Android 应用程序集成,我相信您需要使用 Android 中可用的 RESTFUL 类型的 Web 服务,而不是 SOAP。请考虑深入了解 android 中的 Restful Webservices。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多