我想将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好”
答案 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包为你解析响应字符串。
希望这有帮助。