SOAP调用仅在真实设备中抛出XMLPullParser异常

时间:2013-05-11 19:43:08

标签: android android-ksoap2 xmlpullparser

我在Android应用中使用KSOAP2库来调用SOAP服务。代码在2.2版的模拟器中运行良好。但是当我尝试在我的手机(HTC Wildfire)中运行应用程序(也是2.2)时,我得到XMLPullParser异常...看到这个link但是没有人回复那个。另外,看到另一个讨论{ {3}}但并不完全明白那里的建议。有人可以告诉我如何解决这个问题吗?或者是否有其他可靠的方法来使用我可以使用的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) 

1 个答案:

答案 0 :(得分:1)

您的xml写得正确吗? 这个错误是一个解析器异常,尝试在soapUI程序之前读取你的xml。