Android 使用HttpPost向服务器发送Json数据
客户端向服务器端发送数据,这里用到了两种,一种是在url中带参数,一种是json数据发送方式;
url带参数的写法:
url+/?r=m/calendar/contact_list&uid=3&&subscriptionslist[pageindex]=10&subscriptionslist[recordlimit]=10
从“&”符号之后一连串都是参数。
发送方式代码编写:
DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(HttpUtil.BASIC_URL + HttpUtil.SUBSCRIPTION_URL); try{ if (cookie != null) { // httpClient.setCookieStore(LoginJsonUtil.cookie); List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(2); nameValuePair.add(new BasicNameValuePair("uid", uid)); nameValuePair.add(new BasicNameValuePair("subscriptionslist[pageindex]", subscriptionslist_pageindex)); nameValuePair.add(new BasicNameValuePair("subscriptionslist[recordlimit]", subscriptionslist_recordlimit)); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
传递参数使用nameValuePair。
如果使用cookie的话,使用上段代码中注释掉的部分
httpClient.setCookieStore(LoginJsonUtil.cookie);
httpClient.setCookieStore(LoginJsonUtil.cookie);
HttpClient httpClient = new DefaultHttpClient(); try { HttpPost httpPost = new HttpPost(BASIC_URL + url); List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(); JSONObject jsonObject = new JSONObject(); JSONObject jsonObject2 = new JSONObject(); jsonObject.put("uemail", userbean.getEmail()); jsonObject.put("password", userbean.getPassword()); jsonObject2.put("userbean", jsonObject); nameValuePair.add(new BasicNameValuePair("jsonString", jsonObject .toString())); Log.i("lifeweeker", jsonObject2.toString()); httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair));
这里每个put的顺序我不清楚有没有规定,我是严格按照提供的前后顺序来组合json数据格式的。