如何使用Android通过HttpClient Request发送JSON对象?

时间:2012-02-22 06:02:06

标签: android json post request

我想将JSON文本{}发送到Web服务并阅读响应。我怎么能从android做到这一点?有哪些步骤,例如创建请求对象,设置内容标题等等。

我的代码在这里

public void postData(String result,JSONObject obj) {
    // Create a new HttpClient and Post Header
    HttpClient httpclient = new DefaultHttpClient();
    HttpParams myParams = new BasicHttpParams();
    HttpConnectionParams.setConnectionTimeout(myParams, 10000);
    HttpConnectionParams.setSoTimeout(myParams, 10000);

    String json=obj.toString();

    try {

        HttpPost httppost = new HttpPost(result.toString());
        StringEntity se = new StringEntity(obj.toString()); 
        se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
        httppost.setEntity(se); 

        HttpResponse response = httpclient.execute(httppost);
        String temp = EntityUtils.toString(response.getEntity());
        Log.i("tag", temp);


    } catch (ClientProtocolException e) {

    } catch (IOException e) {
    }
}

我做了什么错误plz纠正我,因为它向我显示了错误的请求错误 但是当我在海报上发帖时,它显示我的状态为“成功200好”

3 个答案:

答案 0 :(得分:13)

我用

做到这一点
httppost.setHeader("Content-type", "application/json");

此外,new HttpPost()将Web服务URL作为参数。

答案 1 :(得分:1)

在try catch循环中,我这样做了:

         HttpPost post = new HttpPost(
         "https://www.placeyoururlhere.com");
         post.setHeader(HTTP.CONTENT_TYPE,"application/json" );
         List<NameValuePair> nameValuePairs = new
         ArrayList<NameValuePair>(1);
         nameValuePairs.add(new BasicNameValuePair("json", json));
         post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

         HttpClient client = new DefaultHttpClient();
         HttpResponse resp = client.execute(post);
         HttpEntity entity = resp.getEntity();

         response = EntityUtils.toString(entity);

您可以根据您拥有的字段数添加您的nameValurPairs。 通常情况下,JSON可能会变得非常庞大,然后我会建议gzipping然后发送,但如果你的JSON相当小并且总是大小相同,那么上面应该适合你。

答案 2 :(得分:1)

如果它是Web服务而不是RestAPI调用,则可以从服务器获取WSDL文件并使用SOAP Stub生成器完成为您创建Request对象和网络代码的所有工作,例如WSClient ++

如果你想自己做,那么事情会变得有点棘手。 Android没有附带SOAP库。 但是,您可以在此处下载第三方库:http://code.google.com/p/ksoap2-android/

如果您需要帮助,可能会发现此主题有用:How to call a .NET Webservice from Android using KSOAP2?

如果像POST或GET这样的REST-API调用更具体,那么它非常简单 只需在函数中传递一个JSON Formatted String对象,并使用org.json包为你解析响应字符串。

希望这有帮助。