Java Android解析对象KSOAP
我想知道如何解析SOAP的输出。我当前的代码如下:Java Android解析对象KSOAP,java,android,parsing,ksoap2,Java,Android,Parsing,Ksoap2,我想知道如何解析SOAP的输出。我当前的代码如下: try{ SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); HttpTransportSE
try{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
Object response = (Object) envelope.getResponse();
Log.e("Output:", response.toString());
}catch (Exception e){
Log.e("Error:", e.getCause().toString());
}
响应的输出如下所示:
[{“category_id”:767,“parent_id”:663,“name”:“Walk”},
{“category_id”:768,“parent_id”:767,“name”:“Google”},
{“category_id”:764,“parent_id”:697,“name”:“Yellow”}]
那么,如何分别获取这些值呢
我只想让你知道,如果我改变这一行:
Object response = (Object) envelope.getResponse();
为此:
SoapObject response = (SoapObject) envelope.getResponse();
我得到以下错误:
10-01 11:28:08.086: E/AndroidRuntime(4600): FATAL EXCEPTION: main
10-01 11:28:08.086: E/AndroidRuntime(4600): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.WebExample/com.example.WebExample.SyncActivity}: java.lang.NullPointerException
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.os.Handler.dispatchMessage(Handler.java:99)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.os.Looper.loop(Looper.java:137)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.ActivityThread.main(ActivityThread.java:5103)
10-01 11:28:08.086: E/AndroidRuntime(4600): at java.lang.reflect.Method.invokeNative(Native Method)
10-01 11:28:08.086: E/AndroidRuntime(4600): at java.lang.reflect.Method.invoke(Method.java:525)
10-01 11:28:08.086: E/AndroidRuntime(4600): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-01 11:28:08.086: E/AndroidRuntime(4600): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-01 11:28:08.086: E/AndroidRuntime(4600): at dalvik.system.NativeStart.main(Native Method)
10-01 11:28:08.086: E/AndroidRuntime(4600): Caused by: java.lang.NullPointerException
10-01 11:28:08.086: E/AndroidRuntime(4600): at
com.example.WebExample.SyncActivity.onCreate(SyncActivity.java:49)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.Activity.performCreate(Activity.java:5133)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
10-01 11:28:08.086: E/AndroidRuntime(4600): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
10-01 11:28:08.086: E/AndroidRuntime(4600): ... 11 more
谢谢。根据您的评论,您需要解析json数组
JSONArray jr = new JSONArray("jsonstring");
for(int i =0 ; i< jr.length();i++)
{
JSONObject jb =(JSONObject) jr.get(i);
String categoryid = jb.getString("category_id");
String parent_id = jb.getString("parent_id");
String name = jb.getString("name");
}
JSONArray jr=新的JSONArray(“jsonstring”);
对于(int i=0;i多亏了@Raghunandan。此外,它检索正确的编码,这非常棒,因为json_编码将特殊字符放在字符串上
try{
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject rep = (SoapObject) envelope.bodyIn;
JSONArray jr = new JSONArray(rep.getPropertyAsString(0));
for(int i =0 ; i< jr.length();i++)
{
JSONObject jb =(JSONObject) jr.get(i);
String name = jb.getString("name");
Log.e("value:", name);
}
}catch (Exception e){
Log.e("Error:", e.toString());
}
试试看{
SoapObject请求=新的SoapObject(名称空间、方法名称);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(请求);
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
调用(SOAP_操作,信封);
SoapObject rep=(SoapObject)envelope.bodyIn;
JSONArray jr=新的JSONArray(rep.getpropertyastring(0));
对于(int i=0;i
第49行是什么SyncActivity.java
?这是我的活动的名称。第49行的内容为空。您的响应是一个字符串,您正在将其转换为soapobject。您现在需要解析它的json数组