1

我在我的 Android 应用程序中使用 KSOAP2 库来调用 SOAP 服务。该代码在 2.2 版的模拟器中运行良好。但是当我尝试在我的手机(HTC Wildfire)中运行该应用程序(也是 2.2)时,我得到了 XMLPullParser 异常......看到这个链接,但没有人回复那个。另外,在这里看到了另一个讨论,但没有确切地了解那里的建议。有人可以告诉我如何解决这个问题吗?或者有没有其他可靠的方法来使用我可以使用的 SOAP 服务?请在我的代码和日志下面找到。

SoapObject request=new SoapObject(NAMESPACE, METHOD_NAME);
            SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
            envelope.dotNet=true;
            envelope.setOutputSoapObject(request);
            envelope.setOutputSoapObject(request);
            envelope.implicitTypes = false;


            HttpTransportSE transport=new HttpTransportSE(URL);

            try{
                Log.v("Inside","Inside try");
                transport.debug = true;
                transport.call(SOAP_ACTION, envelope);

                String xml=transport.responseDump;
                XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
                 factory.setNamespaceAware(true);
                 XmlPullParser xpp = factory.newPullParser();

                 xpp.setInput( new StringReader ( xml ) );
                 int eventType = xpp.getEventType();
                 while (eventType != XmlPullParser.END_DOCUMENT) {
                  if(eventType == XmlPullParser.START_DOCUMENT) {
                      System.out.println("Start document");
                  } else if(eventType == XmlPullParser.START_TAG) {
                      if(xpp.getName().equals("MMDraw")){
                          System.out.println("Start tag "+xpp.getName());
                          megaMResult=new HashMap<String, String>();
                          boolean endParse=false;
                          while(!endParse){
                                          xpp.nextTag();
                              if(xpp.getEventType()==XmlPullParser.END_TAG && xpp.getName().equals("MMDraw") )
                              {
                                   endParse=true;
                                   System.out.println("End Tag of MMDraw Reached");
                              }
                              else{
                                  String key=xpp.getName();
                                  megaMResult.put(xpp.getName(), xpp.nextText());

                              }
                          }

在真实设备上运行时来自日志的消息

05-11 00:00:19.413: W/System.err(8531): org.xmlpull.v1.XmlPullParserException: unexpected type (position:END_DOCUMENT null@1:0 in java.io.InputStreamReader@44830068) 
4

1 回答 1

1

你的xml写对了吗?此错误是解析器异常,请尝试在 soapUI 程序上读取您的 xml。

于 2013-05-12T04:14:29.487 回答