使用http post传递数据

时间:2013-02-21 13:58:35

标签: android http-post

我正在制作一个应用程序,应该点击按钮,如

-- REQUEST HEADERS --
User-Agent: XYZ
Host: root.url
Content-Type: application/json; charset=utf-8
Content-Length: 123
...

-- REQUEST BODY --
{
    "Apikey": "abcdefgh-ijkl-mnop-qrst-uvwxyz12345",
    "Imei": "0123456789012354"
    "Gps": {
        "Latitude": 1.23,
        "Longitude": 4.56
    },
    // Request specifics go here 
}

如何使用http post方法传递此数据

2 个答案:

答案 0 :(得分:1)

嗨检查这个答案:

https://stackoverflow.com/a/10410693/1168654

http://localtone.blogspot.in/2009/07/post-json-using-android-and-httpclient.html

创建如下所示的数组,并将其传递给HttpPost方法。

ArrayList<NameValuePair> nameValuePairs1 = new ArrayList<NameValuePair>();

nameValuePairs1.add(new BasicNameValuePair("user_id", ""));
nameValuePairs1.add(new BasicNameValuePair("product_id", ""));
nameValuePairs1.add(new BasicNameValuePair("product_review",""+text));

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(URL);

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs1));

HttpResponse responce = httpclient.execute(httppost);

HttpEntity entity = responce.getEntity();

is = entity.getContent();

BufferedReader bufr = new BufferedReader(new InputStreamReader(is1,"iso-8859-1"), 8);

StringBuilder sb = new StringBuilder();

sb.append(bufr.readLine() + "\n");

String line = "0";

while ((line = bufr.readLine()) != null) 

{

sb.append(line + "\n");

}

is1.close();

result = sb.toString();

该数组传递了url并给你结果。

答案 1 :(得分:0)

由于您的Web服务在请求中需要JSONObject,您可以使用 setEntity() HTTPPost 中创建并简单地设置它。

例如:

JSONObject objRequest = new JSONObject();
objRequest.put("Apikey","abcdefgh-ijkl-mnop-qrst-uvwxyz12345");
objRequest.put("Imei","0123456789012354");

JSONObject objGps = new JSONObject();
objGps.put("Latitude",1.23);
objGps.put("Longitude",4.56);

objRequest.put(Gps, objGps);

现在,这是一种使用请求数据调用webservice的方法:

try{
     HttpClient httpclient = new DefaultHttpClient();
     HttpPost httpPost= new HttpPost(url);

     post.addHeader("Content-Type", "application/json; charset=utf-8");    // addHeader()    
     httpPost.setEntity(new StringEntity(objRequest.toString(),"utf-8"));  // request data

     HttpResponse response = httpclient.execute(httpPost);
     HttpEntity entity = response.getEntity();
     is = entity.getContent();
 }catch(Exception e){
      Log.e("log_tag", "Error in http connection "+e.toString());
 }