簡體   English   中英

Android 中來自 SOAP Web 服務的 JSON 格式數據

[英]jSON format data from SOAP Web service in Android

我嘗試在 Android 中解析來自 SOAP Web 服務的 Parse JSON 格式數據,但在處理輸出信息時拋出了一個錯誤。這里我粘貼了 Logcat,服務的瀏覽器輸出。有人能告訴我我的代碼有什么問題嗎?

String NAMESPACE = "http://dyndns.biz/AndroidService/";
String METHOD_NAME = "GetItemCategory";
String SOAP_ACTION = "http://dyndns.biz/AndroidService/GetItemCategory";
String URL = "http://dyndns.biz/AndroidService/Service.asmx";
String strDate ="26/07/2014";
SoapObject Request = new SoapObject(NAMESPACE, METHOD_NAME);
Request.addProperty("CreateDate", strDate);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(Request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.debug = true;
androidHttpTransport.call(SOAP_ACTION, envelope);
System.out.println("aht requestDump is :"+ androidHttpTransport.requestDump);
System.out.println("aht responseDump is :"+ androidHttpTransport.responseDump);
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
String responseJSON=response.toString();
JSONArray jarray =new JSONArray(responseJSON);
final String TAG_ID = "Id";    
final String TAG_NAME = "CategoryName";
final String TAG_CODE = "CategorCode";
 final String TAG_ACTIVE = "Active";
final String TAG_CREATEDATE="Createdate";
String  Name=jarray.getJSONObject(0).getString(TAG_NAME);
String  Id=jarray.getJSONObject(0).getString(TAG_ID);
String  Active=jarray.getJSONObject(0).getString(TAG_ACTIVE);
String  Code=jarray.getJSONObject(0).getString(TAG_CODE);
String  CreateDate =jarray.getJSONObject(0).getString(TAG_CREATEDATE);

json 響應

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<soap:Fault>
 <faultcode>soap:Client</faultcode>
  <faultstring>An Error occurred while processing output information.</faultstring>
<detail />
</soap:Fault>
</soap:Body>
</soap:Envelope>

<v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:d="http://www.w3.org/2001/XMLSchema" 
xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" 
xmlns:v="http://schemas.xmlsoap.org/soap/envelope/">
<v:Header />
<v:Body>
<GetItemCategory xmlns="http://everestmrm.dyndns.biz:81/AndroidService/" 
id="o0" c:root="1">
<CreateDate i:type="d:string">26/07/2014</CreateDate>
</GetItemCategory>
</v:Body>
</v:Envelope>

感謝您回復我的 LogCat:

LogCat:

06-18 16:17:49.279: W/System.err(972): SoapFault - faultcode: 'soap:Client' faultstring: 'An Error occurred while processing output information.' faultactor: 'null' detail: org.kxml2.kdom.Node@4185aa40
06-18 16:17:49.281: W/System.err(972):  at org.ksoap2.serialization.SoapSerializationEnvelope.parseBody(SoapSerializationEnvelope.java:136)
06-18 16:17:49.282: W/System.err(972):  at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:137)
06-18 16:17:49.282: W/System.err(972):  at org.ksoap2.transport.Transport.parseResponse(Transport.java:100)
06-18 16:17:49.283: W/System.err(972):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:195)
06-18 16:17:49.284: W/System.err(972):  at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
06-18 16:17:49.287: W/System.err(972):  at com.neotransit.mrmc.download$4.onClick(download.java:379)
06-18 16:17:49.288: W/System.err(972):  at android.view.View.performClick(View.java:3517)
06-18 16:17:49.289: W/System.err(972):  at android.view.View$PerformClick.run(View.java:14155)
06-18 16:17:49.290: W/System.err(972):  at android.os.Handler.handleCallback(Handler.java:605)
06-18 16:17:49.291: W/System.err(972):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-18 16:17:49.293: W/System.err(972):  at android.os.Looper.loop(Looper.java:154)
06-18 16:17:49.294: W/System.err(972):  at android.app.ActivityThread.main(ActivityThread.java:4624)
06-18 16:17:49.295: W/System.err(972):  at java.lang.reflect.Method.invokeNative(Native Method)
06-18 16:17:49.296: W/System.err(972):  at java.lang.reflect.Method.invoke(Method.java:511)
06-18 16:17:49.297: W/System.err(972):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
06-18 16:17:49.299: W/System.err(972):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
06-18 16:17:49.300: W/System.err(972):  at dalvik.system.NativeStart.main(Native Method)
06-18 16:17:49.300: D/jdwp(972): sendRequest : Len=0x32
06-18 16:17:49.301: D/jdwp(972): processIncoming
06-18 16:17:49.301: D/jdwp(972): handlePacket : cmd=0x2, cmdSet=0xF, len=0x10, id=0xD5C, flags=0x0, dataLen=0x5
06-18 16:17:49.301: D/jdwp(972): REQ: EventRequest.Clear (cmd=15/2 dataLen=5 id=0x000d5c)
06-18 16:17:49.301: D/jdwp(972): reply: dataLen=0 err=NONE(0)
06-18 16:17:49.303: D/jdwp(972): processIncoming
06-18 16:17:49.303: D/jdwp(972): handlePacket : cmd=0x6, cmdSet=0xB, len=0x1B, id=0xD5D, flags=0x0, dataLen=0x10
06-18 16:17:49.303: D/jdwp(972): REQ: ThreadReference.Frames (cmd=11/6 dataLen=16 id=0x000d5d)
06-18 16:17:49.303: D/jdwp(972): reply: dataLen=352 err=NONE(0)
06-18 16:17:49.304: D/jdwp(972): processIncoming
06-18 16:17:49.304: D/jdwp(972): handlePacket : cmd=0x7, cmdSet=0xB, len=0x13, id=0xD5E, flags=0x0, dataLen=0x8
06-18 16:17:49.304: D/jdwp(972): REQ: ThreadReference.FrameCount (cmd=11/7 dataLen=8 id=0x000d5e)
06-18 16:17:49.304: D/jdwp(972): reply: dataLen=4 err=NONE(0)
06-18 16:17:49.314: D/jdwp(972): processIncoming
06-18 16:17:49.314: D/jdwp(972): handlePacket : cmd=0x3, cmdSet=0x10, len=0x1B, id=0xD5F, flags=0x0, dataLen=0x10
06-18 16:17:49.314: D/jdwp(972): REQ: StackFrame.ThisObject (cmd=16/3 dataLen=16 id=0x000d5f)
06-18 16:17:49.314: D/jdwp(972): reply: dataLen=9 err=NONE(0)
06-18 16:17:49.316: D/jdwp(972): processIncoming
06-18 16:17:49.316: D/jdwp(972): handlePacket : cmd=0x1, cmdSet=0xB, len=0x13, id=0xD60, flags=0x0, dataLen=0x8
06-18 16:17:49.316: D/jdwp(972): REQ: ThreadReference.Name (cmd=11/1 dataLen=8 id=0x000d60)
06-18 16:17:49.316: D/jdwp(972): reply: dataLen=12 err=NONE(0)
06-18 16:17:49.317: D/jdwp(972): processIncoming
06-18 16:17:49.317: D/jdwp(972): handlePacket : cmd=0x1, cmdSet=0x9, len=0x13, id=0xD61, flags=0x0, dataLen=0x8
06-18 16:17:49.317: D/jdwp(972): REQ: ObjectReference.ReferenceType (cmd=9/1 dataLen=8 id=0x000d61)
06-18 16:17:49.317: D/jdwp(972): reply: dataLen=9 err=NONE(0)

瀏覽器輸出:

[[“69”,“TESTDEMO”,“真”,“測試”,“26/07/2014 2:51:59 PM”]]

對於client代碼:“ client生成的內容不正確或格式錯誤。因此,重新發送相同的數據將導致相同的錯誤。在 SOAP 1.2 中,此錯誤已更改為 Sender。” (來自https://www.safaribooksonline.com/library/view/java-web-services/0596002696/ch04s02.html )所以你的肥皂請求可能是錯誤的 - 格式錯誤或錯誤(除了預期的指定服務)數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM