พอดีผมจะใช้ Android ส่ง JSON หรือ List เป็น Parameter ในการส่งข้อมูลไปที่ Web Services
สอบถามหน่อยครับพอดีผมติดปัญหาในหาในการส่งข้อมูลไปที่ webservice ราวๆ 1 อาทิตย์แล้วครับ ผมอยากจะส่งในรูปแบบของ Json , List แบบไหนก็ได้ครับ รบกวนผู้รู้ช่วยหน่อยนะคับบบ T^T
- ใช้ Library ของ ksoap2 ครับ
Code (Android-Java)
public void invokeJSONWSSentEmp(List<String> empId, String methodName) {
JSONArray jobj = new JSONArray();
for(int i=0 ; i<empId.size() ;i++) {
jobj.put(empId.get(i).toString());
}
SoapObject request = new SoapObject(NAMESPACE, methodName);
PropertyInfo paramPI = new PropertyInfo();
paramPI.setName("emp");
paramPI.setValue(jobj);
paramPI.setType(jobj.getClass());
request.addProperty(paramPI);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
// Set output SOAP object
envelope.setOutputSoapObject(request);
// Create HTTP call object
HttpsTransportSE androidHttpTransport = new HttpsTransportSE(URL, 443, "/vehicle.asmx?WSDL", 5000);
//HttpTransportSE androidHttpTransport = new KeepAliveHttpsTransportSE();
try {
// Invole web service
androidHttpTransport.call(SOAP_ACTION+methodName, envelope);
Log.d(TAG,"Come in try");
// Get the response
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
// Get the response
//SoapObject response = (SoapObject) envelope.bodyIn;
// Assign it to static variable
responseJSON = response.toString();
Log.d(TAG,""+responseJSON);
} catch (Exception e) {
e.printStackTrace();
}
}
มี Warning
java.lang.RuntimeException: Cannot serialize: ["00004705","00004704"]
**** ตอนนี้ผมอยากจะส่งข้อมูลโดยส่งเป็น JSON,List ก็ได้ครับTag : Mobile, Web (ASP.NET), Android, JAVA, Windows
Date :
2014-04-02 15:17:10
By :
TOP
View :
1700
Reply :
5
Android and JSON
เข้ารหัส JSON ก่อนที่จะส่งไปครับ
Date :
2014-04-03 08:45:47
By :
mr.win
Code (Android-Java)
public void invokeJSONWSSentEmp(List<String> empId, String methodName) {
ArrayList<JSONObject> MyArrJson = new ArrayList<JSONObject>();
JSONObject object;
/*** Add ***/
for(int i=0 ; i<empId.size() ;i++) {
object = new JSONObject();
try {
object.put("empId", empId.get(i).toString());
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MyArrJson.add(object);
}
JSONArray json = new JSONArray(MyArrJson);
SoapObject request = new SoapObject(NAMESPACE, methodName);
PropertyInfo paramPI = new PropertyInfo();
paramPI.setName("emp");
paramPI.setValue(json);
paramPI.setType(json.getClass());
request.addProperty(paramPI);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpsTransportSE androidHttpTransport = new HttpsTransportSE(URL, 443, "/vehicle.asmx?WSDL", 5000);
androidHttpTransport.debug = true;
try {
androidHttpTransport.call(SOAP_ACTION+methodName, envelope);
Log.d(TAG,"Come in try");
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
responseJSON = response.toString();
Log.d(TAG,""+responseJSON);
} catch (Exception e) {
e.printStackTrace();
}
}
ผมทดลองแล้วครับ
ยังมี Warning
- java.lang.RuntimeException: Cannot serialize: [{"empId":"00004703"},{"empId":"00004702"}]
- at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:708)
- at org.ksoap2.serialization.SoapSerializationEnvelope.writeProperty(SoapSerializationEnvelope.java:692)
- at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:661)
- at org.ksoap2.serialization.SoapSerializationEnvelope.writeObjectBody(SoapSerializationEnvelope.java:645)
- at org.ksoap2.serialization.SoapSerializationEnvelope.writeElement(SoapSerializationEnvelope.java:702)
- at org.ksoap2.serialization.SoapSerializationEnvelope.writeBody(SoapSerializationEnvelope.java:618)
- at org.ksoap2.SoapEnvelope.write(SoapEnvelope.java:198)
- at org.ksoap2.transport.Transport.createRequestData(Transport.java:107)
- at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:119)
- at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:95)
Date :
2014-04-03 09:36:29
By :
TOP
ลองเอา [ และ ] ออกได้หรือเปล่าครับ
Date :
2014-04-03 09:57:40
By :
mr.win
ก็ยังไม่ได้ครับบบผม
ผมลองแบบนี้ก็ยังไม่ได้ครับ {"empId":["00004700","00004701"]} ,
ประวัติการแก้ไข 2014-04-03 10:33:05 2014-04-03 10:48:16
Date :
2014-04-03 10:24:28
By :
TOP
ผมติดปัญหาเหมือนท่านเลยครับ แก้ไม่ออกสักทีงมมาทั้งนใครพอมีวิธีไหมครับ ช่วยผมด้วยยย
Date :
2017-07-11 15:47:34
By :
ทดสอบ1234
Load balance : Server 02