Android向服务器端发送json数据

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

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

   public void sendJsonToServer() {
		HttpClient httpClient = new DefaultHttpClient();
		try {

			HttpPost httpPost = new HttpPost(constant.url);
			HttpParams httpParams = new BasicHttpParams();
			List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
			Gson gson = new Gson();
			String str = gson.toJson(initData());
			nameValuePair.add(new BasicNameValuePair("jsonString", URLEncoder
					.encode(str, "utf-8")));
			httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
			httpPost.setParams(httpParams);
			Toast.makeText(Main.this, "发送的数据:\n" + str.toString(),
					Toast.LENGTH_SHORT).show();
			httpClient.execute(httpPost);
			HttpResponse response = httpClient.execute(httpPost);
			StatusLine statusLine = response.getStatusLine();
			if (statusLine != null && statusLine.getStatusCode() == 200) {
				HttpEntity entity = response.getEntity();
				if (entity != null) {
					Toast.makeText(
							Main.this,
							"服务器处理返回结果:" + readInputStream(entity.getContent()),
							Toast.LENGTH_SHORT).show();
				} else {
					Toast.makeText(Main.this, "没有返回相关数据", Toast.LENGTH_SHORT)
							.show();
				}
			} else {
				Toast.makeText(Main.this, "发送失败,可能服务器忙,请稍后再试",
						Toast.LENGTH_SHORT).show();
			}
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	private static String readInputStream(InputStream is) throws IOException {
		if (is == null)
			return null;
		ByteArrayOutputStream bout = new ByteArrayOutputStream();
		int len = 0;
		byte[] buf = new byte[1024];
		while ((len = is.read(buf)) != -1) {
			bout.write(buf, 0, len);
		}
		is.close();
		return URLDecoder.decode(new String(bout.toByteArray()), "utf-8");
	}
/*
 * 填充数据源
 */
	public List<Product> initData() {
		List<Product> persons = new ArrayList<Product>();
		for (int i = 0; i < 5; i++) {
			Product p = new Product();
			p.setLocation("所在位置");
			p.setName("名称" + i);
			persons.add(p);
		}
		return persons;
	}

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


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

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

protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["jsonString"] != null)
        {
            string json = Request["jsonString"].ToString().Trim();
            json = HttpUtility.UrlDecode(json);
            try
            {
                string str = json.Substring(0, json.Length - 1);//去掉最后一个]
                str = str.Substring(1);//去掉第一个[
                string[] sArray = Regex.Split(str, "},");
                JavaScriptSerializer jss = new JavaScriptSerializer();
                for (int i = 0; i < sArray.Length; i++)
                {
                    if (i < sArray.Length - 1)
                    {
                        sArray[i] += "}";
                    }
                    ProductBillList list = jss.Deserialize<ProductBillList>(sArray[i]);
                    Response.Write(list.location + list.name + "\n");
                }
            }
            catch
            {
                Response.Write("出现异常");
            }
        }
        else
        {
            Response.Write("接收数据失败");
        }
    }
    public class ProductBill
    {
        public List<ProductBillList> ProductBillLists { get; set; }
    }

    public class ProductBillList
    {
        public String name { get; set; }
        public String location { get; set; }
    }
     


效果:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值