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. 


    效果:

展开阅读全文

没有更多推荐了,返回首页