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

我想将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纠正我,因为它显示我一个错误的请求错误,但当我在海报发布时它显示我的状态为Successfull 200 ok

我这样做

 httppost.setHeader("Content-type", "application/json"); 

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

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

  HttpPost post = new HttpPost( "https://www.placeyoururlhere.com"); post.setHeader(HTTP.CONTENT_TYPE,"application/json" ); List nameValuePairs = new ArrayList(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相当小并且总是相同的大小,上面应该适合你。

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

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

如果您在使用它时需要帮助,您可能会发现此主题很有用: 如何使用KSOAP2从Android调用.NET Web服务?

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

希望这可以帮助。