Android向服务器端发送json数据


Android向服务器端发送json数据


  
  • android 向服务器端发送json数据,本文讲解的知识点比较基础,如果你是大神,请直接关闭该网页,免得浪费你宝贵时间。

    1.向服务器端发送json数据
    关键代码:

    01. public void sendJsonToServer() {
    02. HttpClient httpClient = new DefaultHttpClient();
    03. try {
    04.  
    05. HttpPost httpPost = new HttpPost(constant.url);
    06. HttpParams httpParams = new BasicHttpParams();
    07. List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
    08. Gson gson = new Gson();
    09. String str = gson.toJson(initData());
    10. nameValuePair.add(new BasicNameValuePair("jsonString", URLEncoder
    11. .encode(str, "utf-8")));
    12. httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
    13. httpPost.setParams(httpParams);
    14. Toast.makeText(Main.this"发送的数据:\n" + str.toString(),
    15. Toast.LENGTH_SHORT).show();
    16. httpClient.execute(httpPost);
    17. HttpResponse response = httpClient.execute(httpPost);
    18. StatusLine statusLine = response.getStatusLine();
    19. if (statusLine != null && statusLine.getStatusCode() == 200) {
    20. HttpEntity entity = response.getEntity();
    21. if (entity != null) {
    22. Toast.makeText(
    23. Main.this,
    24. "服务器处理返回结果:" + readInputStream(entity.getContent()),
    25. Toast.LENGTH_SHORT).show();
    26. else {
    27. Toast.makeText(Main.this"没有返回相关数据", Toast.LENGTH_SHORT)
    28. .show();
    29. }
    30. else {
    31. Toast.makeText(Main.this"发送失败,可能服务器忙,请稍后再试",
    32. Toast.LENGTH_SHORT).show();
    33. }
    34. catch (Exception e) {
    35. throw new RuntimeException(e);
    36. }
    37. }
    38.  
    39. private static String readInputStream(InputStream is) throws IOException {
    40. if (is == null)
    41. return null;
    42. ByteArrayOutputStream bout = new ByteArrayOutputStream();
    43. int len = 0;
    44. byte[] buf = new byte[1024];
    45. while ((len = is.read(buf)) != -1) {
    46. bout.write(buf, 0, len);
    47. }
    48. is.close();
    49. return URLDecoder.decode(new String(bout.toByteArray()), "utf-8");
    50. }
    51. /*
    52. * 填充数据源
    53. */
    54. public List<Product> initData() {
    55. List<Product> persons = new ArrayList<Product>();
    56. for (int i = 0; i < 5; i++) {
    57. Product p = new Product();
    58. p.setLocation("所在位置");
    59. p.setName("名称" + i);
    60. persons.add(p);
    61. }
    62. return persons;
    63. }

    2.服务器端接收json数据后返回处理结果


    3.利用Gson将集合转换成json形式
    如果你还没有听过gson 或是对其不是很熟悉,请先参考Android解析json数据(Gson),或是百度 谷歌之。

    4.服务器端采用VS建立一个网站,新建一个页面androidtest.aspx 
    源码:

    01. protected void Page_Load(object sender, EventArgs e)
    02. {
    03. if (Request["jsonString"] != null)
    04. {
    05. string json = Request["jsonString"].ToString().Trim();
    06. json = HttpUtility.UrlDecode(json);
    07. try
    08. {
    09. string str = json.Substring(0, json.Length - 1);//去掉最后一个]
    10. str = str.Substring(1);//去掉第一个[
    11. string[] sArray = Regex.Split(str, "},");
    12. JavaScriptSerializer jss = new JavaScriptSerializer();
    13. for (int i = 0; i < sArray.Length; i++)
    14. {
    15. if (i < sArray.Length - 1)
    16. {
    17. sArray[i] += "}";
    18. }
    19. ProductBillList list = jss.Deserialize<ProductBillList>(sArray[i]);
    20. Response.Write(list.location + list.name + "\n");
    21. }
    22. }
    23. catch
    24. {
    25. Response.Write("出现异常");
    26. }
    27. }
    28. else
    29. {
    30. Response.Write("接收数据失败");
    31. }
    32. }
    33. public class ProductBill
    34. {
    35. public List<ProductBillList> ProductBillLists { get; set; }
    36. }
    37.  
    38. public class ProductBillList
    39. {
    40. public String name { get; set; }
    41. public String location { get; set; }
    42. }
    43.  


    效果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值