2013-04-26 155 views
0

我是一名Android和Web服務(基於java soap)的初學者。我試圖做的是請求Web服務中的一個方法,它不需要任何初始測試參數並在logcat或簡單的文本視圖中捕獲響應。最初,它給我提供了一個基本的HTTP認證的網絡服務身份驗證錯誤,因爲它所需的相同,然後調用Web服務時發生錯誤

,當我跑程序再次就開始了這條線在那裏我打電話後拋出異常:

httpTransport.call(SOAP_ACTION, envelope); 

我得到的錯誤是:

十月4日至26日:10:12.945:I /的System.out(322):org.xmlpull.v1.XmlPullParserException:意想不到類型(位置:TEXT enter code here 04-26 10:10:12.945:I/System.out(322):------ = _ Part_56。 .. @ 5:13 in [email protected]

我谷歌搜索了很多,甚至搜索堆棧溢出幾乎所有的問題。但沒有找到任何有用的解決方案,因此再次提出這個問題。請通過代碼,讓我知道我錯了

package com.webservices_demo; 
import java.io.IOException; 
import java.io.UnsupportedEncodingException; 
import java.net.Authenticator; 
import java.net.HttpURLConnection; 
import java.net.MalformedURLException; 
import java.net.PasswordAuthentication; 
import java.net.URL; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.ParseException; 
import org.apache.http.auth.AuthScope; 
import org.apache.http.auth.UsernamePasswordCredentials; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.protocol.HTTP; 
import org.apache.http.util.EntityUtils; 
import org.ksoap2.SoapEnvelope; 
import org.ksoap2.SoapFault; 
import org.ksoap2.serialization.SoapObject; 
import org.ksoap2.serialization.SoapPrimitive; 
import org.ksoap2.serialization.SoapSerializationEnvelope; 
import org.ksoap2.transport.HttpTransportSE; 

import android.util.Base64; 
import android.util.Log; 
import android.util.Xml; 
import android.widget.TextView; 
import android.app.Activity; 
import android.os.Bundle; 
import org.xmlpull.v1.XmlPullParser; 
import org.xmlpull.v1.XmlPullParserFactory; 
/*working one*/ 
public class FirstAppUI extends Activity { 
private static final String SOAP_ACTION ="http://server name:portNo/ws/TririgaWS"; 
    private static final String OPERATION_NAME = "getApplicationInfo()"; 
    private static final String WSDL_TARGET_NAMESPACE = "http://ws.tririga.com/"; 
    private static final String SOAP_ADDRESS = "http://servername:port.no/ws/TririgaWS?wsdl"; 




    @Override 

    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     TextView textView = new TextView(this); 
     setContentView(textView); 



     /*Basic Http Authentication to connect*/ 


Authenticator.setDefault(new Authenticator(){ 
protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication("system","admin".toCharArray()); 
        }}); 
       HttpURLConnection c = null; 
       try { 
       c = (HttpURLConnection) new URL(SOAP_ADDRESS).openConnection(); 
        System.out.println("=======Connection successful======="); 
       //c.setRequestProperty("Authorization", "basic " + 
        //  Base64.encode("system:admin".getBytes(), 0)); 
       } catch (MalformedURLException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 

       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
       e1.printStackTrace(); 


       } 
       c.setUseCaches(false); 
       try { 
        c.connect(); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 

       } 



     SoapObject request=new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME); 
     System.out.println("---------------This is Request sent-------------"); 
     System.out.println(request.toString()); 
     System.out.println("---------------End of Request sent--------------"); 
     SoapSerializationEnvelope envelope = new  SoapSerializationEnvelope(SoapEnvelope.VER11); 
      envelope.setOutputSoapObject(request); 


     HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS); 

     try 

     { 
      ///for testing purpose 
      System.out.println("======= Path Is=======" +httpTransport.getPath()); 
      System.out.println("======= Host Is======="+httpTransport.getHost()); 
      System.out.println("======= Port Is======="+httpTransport.getPort()); 
      System.out.println("======= String =======" +httpTransport.toString()); 
      System.out.println("======= Debugging ======="+ httpTransport.debug); 
      //end testing 



      httpTransport.call(SOAP_ACTION, envelope); 
      SoapObject result = (SoapObject)envelope.bodyIn; 

      SoapObject response = (SoapObject) envelope.getResponse(); 

      System.out.println("result is:- "+ result.toString()); 
       //FirstAppUI[] getApplicationInfo = RetrieveFromSoap(response); 

       TextView actv = (TextView)findViewById(R.id.textView); 
       //textView.setHint(getApplicationInfo[0].toString()); 



      System.out.println("=======Connection Is======="+httpTransport.getConnection()); 
      //SoapObject response = (SoapObject) envelope.getResponse(); 


      System.out.println("=======Namespace is=======" +response.getNamespace()); 
      //Object obj = envelope.bodyIn; 
     textView.setText(response.toString()); 
      System.out.println("-------------------Body In Response---------------"); 

      System.out.println(response.toString()); 

     } 

     catch (Exception exception) 

     { 

      textView.setText(exception.toString()); 
      String issue= exception.toString(); 
      System.out.println("====================================================CAUGHT"); 
      System.out.println(issue); 
      exception.printStackTrace(); 


     } 

    } 


} 

這是logcat的輸出

04-26 10:10:04.454: D/installd(35): DexInv: --- BEGIN '/data/app/com.webservices_demo-2.apk' --- 
04-26 10:10:05.064: D/dalvikvm(300): DexOpt: 'Lorg/kxml2/kdom/Node;' has an earlier definition; blocking out 
04-26 10:10:05.064: D/dalvikvm(300): DexOpt: 'Lorg/xmlpull/v1/XmlPullParser;' has an earlier definition; blocking out 
04-26 10:10:05.064: D/dalvikvm(300): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserException;' has an earlier definition; blocking out 
04-26 10:10:05.064: D/dalvikvm(300): DexOpt: 'Lorg/xmlpull/v1/XmlPullParserFactory;' has an earlier definition; blocking out 
04-26 10:10:05.064: D/dalvikvm(300): DexOpt: 'Lorg/xmlpull/v1/XmlSerializer;' has an earlier definition; blocking out 
04-26 10:10:05.094: D/dalvikvm(300): DexOpt: 'Lorg/kxml2/io/KXmlParser;' has an earlier definition; blocking out 
04-26 10:10:05.094: D/dalvikvm(300): DexOpt: 'Lorg/kxml2/io/KXmlSerializer;' has an earlier definition; blocking out 
04-26 10:10:05.094: D/dalvikvm(300): DexOpt: 'Lorg/kxml2/kdom/Document;' has an earlier definition; blocking out 
04-26 10:10:05.094: D/dalvikvm(300): DexOpt: 'Lorg/kxml2/kdom/Element;' has an earlier definition; blocking out 
04-26 10:10:05.544: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;' 
04-26 10:10:05.674: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;' 
04-26 10:10:05.714: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:05.714: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:05.725: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/kxml2/io/KXmlSerializer;' 
04-26 10:10:05.725: D/dalvikvm(300): DexOpt: not verifying 'Lorg/kxml2/kdom/Node;': multiple definitions 
04-26 10:10:05.734: D/dalvikvm(300): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParser;': multiple definitions 
04-26 10:10:05.734: D/dalvikvm(300): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserException;': multiple definitions 
04-26 10:10:05.734: D/dalvikvm(300): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlPullParserFactory;': multiple definitions 
04-26 10:10:05.734: D/dalvikvm(300): DexOpt: not verifying 'Lorg/xmlpull/v1/XmlSerializer;': multiple definitions 
04-26 10:10:06.104: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.104: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.104: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.104: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.104: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.104: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.114: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParser;' 
04-26 10:10:06.124: D/dalvikvm(300): DexOpt: not verifying 'Lorg/kxml2/io/KXmlParser;': multiple definitions 
04-26 10:10:06.124: D/dalvikvm(300): DexOpt: not verifying 'Lorg/kxml2/io/KXmlSerializer;': multiple definitions 
04-26 10:10:06.124: D/dalvikvm(300): DexOpt: not verifying 'Lorg/kxml2/kdom/Document;': multiple definitions 
04-26 10:10:06.124: D/dalvikvm(300): DexOpt: not verifying 'Lorg/kxml2/kdom/Element;': multiple definitions 
04-26 10:10:06.124: I/dalvikvm(300): DexOpt: not resolving ambiguous class 'Lorg/xmlpull/v1/XmlPullParserException;' 
04-26 10:10:06.164: D/dalvikvm(300): DexOpt: load 167ms, verify+opt 1058ms 
04-26 10:10:06.244: D/installd(35): DexInv: --- END '/data/app/com.webservices_demo-2.apk' (success) --- 
04-26 10:10:06.244: W/PackageManager(61): Code path for pkg : com.webservices_demo changing from /data/app/com.webservices_demo-1.apk to /data/app/com.webservices_demo-2.apk 
04-26 10:10:06.244: W/PackageManager(61): Resource path for pkg : com.webservices_demo changing from /data/app/com.webservices_demo-1.apk to /data/app/com.webservices_demo-2.apk 
04-26 10:10:06.244: D/PackageManager(61): Activities: com.webservices_demo.FirstAppUI com.webservices_demo.EarthQuake com.webservices_demo.Webservices_Demo 
04-26 10:10:06.254: I/ActivityManager(61): Force stopping package com.webservices_demo uid=10037 
04-26 10:10:06.364: I/installd(35): move /data/dalvik-cache/[email protected]@[email protected] -> /data/dalvik-cache/[email protected]@[email protected] 
04-26 10:10:06.364: D/PackageManager(61): New package installed in /data/app/com.webservices_demo-2.apk 
04-26 10:10:06.484: I/ActivityManager(61): Force stopping package com.webservices_demo uid=10037 
04-26 10:10:06.534: D/dalvikvm(168): GC_EXPLICIT freed 305K, 52% free 2778K/5703K, external 1625K/2137K, paused 52ms 
04-26 10:10:06.604: I/ActivityManager(61): Start proc com.svox.pico for broadcast com.svox.pico/.VoiceDataInstallerReceiver: pid=301 uid=10009 gids={} 
04-26 10:10:06.634: W/RecognitionManagerService(61): no available voice recognition services found 
04-26 10:10:06.854: I/ActivityThread(301): Pub com.svox.pico.providers.SettingsProvider: com.svox.pico.providers.SettingsProvider 
04-26 10:10:07.104: D/dalvikvm(61): GC_EXPLICIT freed 950K, 46% free 4569K/8455K, external 4373K/7373K, paused 108ms 
04-26 10:10:07.114: I/installd(35): unlink /data/dalvik-cache/[email protected]@[email protected] 
04-26 10:10:07.134: D/AndroidRuntime(216): Shutting down VM 
04-26 10:10:07.144: D/dalvikvm(216): GC_CONCURRENT freed 100K, 72% free 293K/1024K, external 0K/0K, paused 2ms+1ms 
04-26 10:10:07.154: D/jdwp(216): adbd disconnected 
04-26 10:10:07.184: I/dalvikvm(216): JNI: AttachCurrentThread (from ???.???) 
04-26 10:10:07.184: I/AndroidRuntime(216): NOTE: attach of thread 'Binder Thread #3' failed 
04-26 10:10:07.774: D/AndroidRuntime(314): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<< 
04-26 10:10:07.774: D/AndroidRuntime(314): CheckJNI is ON 
04-26 10:10:08.344: D/AndroidRuntime(314): Calling main entry com.android.commands.am.Am 
04-26 10:10:08.364: I/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.webservices_demo/.FirstAppUI } from pid 314 
04-26 10:10:08.394: I/ActivityManager(61): Start proc com.webservices_demo for activity com.webservices_demo/.FirstAppUI: pid=322 uid=10037 gids={3003} 
04-26 10:10:08.404: D/AndroidRuntime(314): Shutting down VM 
04-26 10:10:08.414: D/dalvikvm(314): GC_CONCURRENT freed 101K, 69% free 318K/1024K, external 0K/0K, paused 1ms+2ms 
04-26 10:10:08.414: D/jdwp(314): adbd disconnected 
04-26 10:10:08.494: I/dalvikvm(314): JNI: AttachCurrentThread (from ???.???) 
04-26 10:10:08.494: I/AndroidRuntime(314): NOTE: attach of thread 'Binder Thread #3' failed 
04-26 10:10:09.084: I/System.out(322): executing requestGET http://192.168.1.70:8001/ws/TririgaWS HTTP/1.1 
04-26 10:10:11.920: I/System.out(322): ---------------------------------------- 
04-26 10:10:11.920: I/System.out(322): HTTP/1.1 200 OK 
04-26 10:10:11.920: I/System.out(322): [email protected] 
04-26 10:10:11.925: I/System.out(322): Response content length: 47 
04-26 10:10:11.935: I/System.out(322): =======Connection successful======= 
04-26 10:10:12.335: I/System.out(322): ---------------This is Request sent------------- 
04-26 10:10:12.335: I/System.out(322): getApplicationInfo(){} 
04-26 10:10:12.335: I/System.out(322): ---------------End of Request sent-------------- 
04-26 10:10:12.365: I/System.out(322): ======= Path Is=======/ws/TririgaWS 
04-26 10:10:12.365: I/System.out(322): ======= Host Is=======192.168.1.70 
04-26 10:10:12.365: I/System.out(322): ======= Port Is=======8001 
04-26 10:10:12.365: I/System.out(322): ======= String [email protected] 
04-26 10:10:12.365: I/System.out(322): ======= Debugging =======false 
04-26 10:10:12.945: I/System.out(322): ====================================================CAUGHT 
04-26 10:10:12.945: I/System.out(322): org.xmlpull.v1.XmlPullParserException: unexpected type (position:TEXT 
04-26 10:10:12.945: I/System.out(322): [email protected]:13 in [email protected])* 
04-26 10:10:12.945: W/System.err(322): org.xmlpull.v1.XmlPullParserException: unexpected type (position:TEXT 
04-26 10:10:12.955: W/System.err(322): [email protected]:13 in [email protected]) 
04-26 10:10:12.955: W/System.err(322): at org.kxml2.io.KXmlParser.exception(KXmlParser.java:273) 
04-26 10:10:12.955: W/System.err(322): at org.kxml2.io.KXmlParser.nextTag(KXmlParser.java:1413) 
04-26 10:10:12.955: W/System.err(322): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:126) 
04-26 10:10:12.955: W/System.err(322): at org.ksoap2.transport.Transport.parseResponse(Transport.java:96) 
04-26 10:10:12.955: W/System.err(322): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:189) 
04-26 10:10:12.955: W/System.err(322): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95) 
04-26 10:10:12.955: W/System.err(322): at com.webservices_demo.FirstAppUI.onCreate(FirstAppUI.java:196) 
04-26 10:10:12.955: W/System.err(322): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-26 10:10:12.955: W/System.err(322): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
04-26 10:10:12.965: W/System.err(322): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
04-26 10:10:12.965: W/System.err(322): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
04-26 10:10:12.965: W/System.err(322): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
04-26 10:10:12.965: W/System.err(322): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-26 10:10:12.965: W/System.err(322): at android.os.Looper.loop(Looper.java:123) 
04-26 10:10:12.965: W/System.err(322): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-26 10:10:12.965: W/System.err(322): at java.lang.reflect.Method.invokeNative(Native Method) 
04-26 10:10:12.965: W/System.err(322): at java.lang.reflect.Method.invoke(Method.java:507) 
04-26 10:10:12.965: W/System.err(322): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-26 10:10:12.965: W/System.err(322): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
04-26 10:10:12.965: W/System.err(322): at dalvik.system.NativeStart.main(Native Method) 
+0

在AndroidManifest.xml中檢查必需的權限(互聯網) – SKK 2013-04-26 05:29:47

+0

感謝您的建議,但權限已經given.else它會拋出java.net.SocketException:權限被拒絕。 – Mangesh 2013-04-26 05:32:43

回答

-1

試試這個代碼

try { 
       HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

       androidHttpTransport.call(SOAP_ACTION, envelope); 

       SoapObject result = (SoapObject) envelope.bodyIn; 

       if (result != null) { 

       tvResult.setText(result.getProperty0).toString()); 

       } else { 

        tvResult.setText("No Output"); 
       } 

      } catch (Exception e) { 
       // TODO: handle exception 
       e.printStackTrace(); 
       tvResult.setText(e.toString()); 
      } 

希望這將有助於充分。

+0

謝謝您的建議。但它沒有幫助 – Mangesh 2013-04-26 05:47:52

+0

請檢查您的URL,SoapAction,NAMESPACE,SOAP_ADDRESS鏈接已正確插入常量 – khurram 2013-04-26 05:55:04

+0

如果我嘗試使用SOAPUI測試url,它會給我正確的output.only我不確定的事情是關於SOAP_ACTION,它應該是什麼 – Mangesh 2013-04-26 06:00:30

相關問題