Android จะส่งค่า ประมาณ 10 Record ไปยัง webservice (asp.net ) มีวิธีไหนบ้างครับ
ส่งเป็น JSON ไปครับ ฝั่งรับของ ASP.Net สามารถแปลงเป็น DataTable ได้เลย
Date :
2014-09-19 15:57:40
By :
mr.win
มีตัวอย่างตอนส่งเป็นjson แบบหลาบบรรทัดมั้ยครับ ที่ผมมี มันส่งได้แค่บรรทัดเดียว
Date :
2014-09-19 16:15:14
By :
hackerdemo
Code (Android-Java)
String strJSON = "[{\"MemberID\":\"1\",\"Name\":\"Weerachai\",\"Tel\":\"0819876107\"}" +
",{\"MemberID\":\"2\",\"Name\":\"Win\",\"Tel\":\"021978032\"}" +
",{\"MemberID\":\"3\",\"Name\":\"Eak\",\"Tel\":\"0876543210\"}]";
JSONArray data = new JSONArray(strJSON);
ArrayList<HashMap<String, String>> MyArrList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
for(int i = 0; i < data.length(); i++){
JSONObject c = data.getJSONObject(i);
map = new HashMap<String, String>();
map.put("MemberID", c.getString("MemberID"));
map.put("Name", c.getString("Name"));
map.put("Tel", c.getString("Tel"));
MyArrList.add(map);
}
Android and JSON
Date :
2014-09-19 16:23:21
By :
mr.win
ตรงส่วนนี้ ผมได้แล้วครับ แต่ติดตรงจะส่งก้อน MyArrList ไปยังserver ด้วย json ยังไง ติดตรงนี้แหละครับ รบกวนชี้แนะทีครับ
Date :
2014-09-19 16:45:40
By :
hackerdemo
ผิด ๆๆๆ เอาอันนี้ครับ
Code (Android-Java)
ArrayList<JSONObject> MyArrJson = new ArrayList<JSONObject >();
JSONObject object;
/*** Rows 1 ***/
object = new JSONObject();
object.put("MemberID","1");
object.put("Name", "Weerachai");
object.put("Tel", "0819876107");
MyArrJson.add(object);
/*** Rows 2 ***/
object = new JSONObject();
object.put("MemberID","2");
object.put("Name", "Win");
object.put("Tel", "021978032");
MyArrJson.add(object);
/*** Rows 3 ***/
object = new JSONObject();
object.put("MemberID","3");
object.put("Name", "Eak");
object.put("Tel", "0876543210");
MyArrJson.add(object);
JSONArray json = new JSONArray(MyArrJson);
return json;
Date :
2014-09-19 16:52:42
By :
mr.win
ผมลองมาทั้งแล้วครับ ยังไม่ได้ จนปัญญาแล้วครับ ตัวอย่างส่วนมากมีแค่แบบส่งข้อมูลบบรทัดเดียว เช่นข้อมูลการลงทะเบียนของคนหนึ่งคน แต่ของผม ต้องส่งข้อมูลของคนจำนวน 10 คน ทีเดียว ำไงก็ไม่ได้ รบกวนพี่วิน แนะนำผมที ผมเอาโค้ดมาให้ดูด้วยครับ
Code (Android-Java)
JSONArray data = new JSONArray(MyArrJson);
JSONObject c;
for(int i = 0; i < data.length(); i++){
c = data.getJSONObject(i);
json = c.toString();
}
StringEntity se = new StringEntity(json);
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse httpResponse = httpclient.execute(httpPost);
inputStream = httpResponse.getEntity().getContent();
// 10. convert inputstream to string
if(inputStream != null)
result = convertInputStreamToString(inputStream);
else
result = "Did not work!";
Date :
2014-09-20 15:30:55
By :
hackerdemo
ฝั่ง web api นายเขียนแบบไหนอ่ะ
ถ้าต้องส่ง 10 record เป็นเราจะสร้างเป็น class ขึ้นมา เพื่อสร้างเป็น object
เวลา response กลับไปจะได้ทำได้ง่าย
แต่เวลาส่งก็ต้อง serialize object ไปเป็น json ก่อนถึงจะส่งไป
Date :
2014-09-23 08:00:35
By :
ห้ามตอบเกินวันละ 2 กระทู้
ในตัวอย่างที่ผมบอกมีแนวทางอยู่ให้แล้วครับ
Date :
2014-09-23 08:15:28
By :
mr.win
ตอนนี้ แปลงเปน JSON ARRAY เรียบร้อยแล้วครับ แต่ตอนส่งไป WEBSERVICE มันส่งไปไม่ได้ ไม่แน่ใจว่า เป็นเพราะผมใช้ WEBSERVICE ASP.NET หรือป่าว เพราะ ส่วนมากตัวอย่างจะใช้ ของ php พอจะมีตัวอย่าง การส่งไป WEBSERVICE ที่เป็น ASP.NET มั้ยครับ
Date :
2014-09-23 14:20:09
By :
hackerdemo
ถ้ามันส่ง String ได้ ตัว JSON ก็ได้ปกติครับ
Date :
2014-09-23 14:35:31
By :
mr.win
นี่คือ โค้ดของผมนะครับ มันจะไม่เกิดอะไรขึ้นเลย หรือผมทำตรงไหนผิดครับ หรือแท้ที่จริงแล้ว ถ้าเราจะส่งข้อมูลทั้งก้อนแบบนี้ เราใช้ KSOP2 ไม่ได้หรือเปล่าครับ
Code (Android-Java)
JSONArray data = new JSONArray(MyArrJson);
SoapObject request2 = new SoapObject(NAMESPACE, METHOD_NAME3);
request2.addProperty("sa",data );
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope2 = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope2.setOutputSoapObject(request2);
envelope2.dotNet = true;
try {
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
//this is the actual part that will call the webservice
androidHttpTransport.call(SOAP_ACTION3, envelope2);
// Get the SoapResult from the envelope body.
SoapObject result2 = (SoapObject)envelope2.bodyIn;
if(result2 != null)
{
//Toast.makeText(getApplicationContext(),result.getProperty(0).toString(),Toast.LENGTH_LONG).show();
String status =result2.getProperty(0).toString().trim();
}
else
{
}
} catch (Exception e) {
// e.printStackTrace();
// Toast.makeText(getApplicationContext(), "EXception: "+ e.toString(),Toast.LENGTH_LONG).show();
}
ประวัติการแก้ไข 2014-09-23 15:27:26
Date :
2014-09-23 15:26:02
By :
hackerdemo
ลืมบอกไป
คือถ้านายเขียน api ตรงนั้นเรียบร้อยแล้ว
เวลาเรียกใช้ก็ใช้ HttpWebRequest เรียกจาก api เอาได้เลย
โดยแค่ระบุ url กับ controller ที่จะใช้
ก็จะได้ json กลับมา
Date :
2014-09-23 16:05:19
By :
ห้ามตอบเกินวันละ 2 กระทู้
โอเคครับ เดี๋ยวผมจะลองศึกษาดูครับ ว่าแต่ WEB API กับ WEB SERVICE นี้ตัวเดียวกันหรือเปล่าครับ
ถ้าผมมีข้อสงสัย เกี่ยวกับ WEB API จะสอบได้ทางไหนได้บ้างครับ
Date :
2014-09-23 17:20:11
By :
hackerdemo
ในทางปฏิบัติพวก Web API มันใช้งานง่ายครับ แต่พวก Web Services มันจะมีความเป็นส่วนตัวและปลอภัยกว่า Web API ครับ
Date :
2014-09-23 17:26:28
By :
mr.win
Load balance : Server 01