我正在为一个 Android 应用程序编写代码,该应用程序应该获取数据,将其打包为 Json 并将其发布到 Web 服务器,而 Web 服务器又应该使用 json 进行响应。
使用 GET 请求工作正常,但由于某种原因,使用 POST 时所有数据似乎都会被删除,并且服务器不会收到任何内容。
这是代码片段:
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, 5000);
HttpConnectionParams.setSoTimeout(params, 5000);
DefaultHttpClient httpClient = new DefaultHttpClient(params);
BasicCookieStore cookieStore = new BasicCookieStore();
httpClient.setCookieStore(cookieStore);
String uri = JSON_ADDRESS;
String result = "";
String username = "user";
String apikey = "something";
String contentType = "application/json";
JSONObject jsonObj = new JSONObject();
try {
jsonObj.put("username", username);
jsonObj.put("apikey", apikey);
} catch (JSONException e) {
Log.e(TAG, "JSONException: " + e);
}
HttpPost httpPost = new HttpPost(uri);
List<NameValuePair> postParams = new ArrayList<NameValuePair>();
postParams.add(new BasicNameValuePair("json", jsonObj.toString()));
HttpGet httpGet = null;
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(postParams);
entity.setContentEncoding(HTTP.UTF_8);
entity.setContentType("application/json");
httpPost.setEntity(entity);
httpPost.setHeader("Content-Type", contentType);
httpPost.setHeader("Accept", contentType);
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "UnsupportedEncodingException: " + e);
}
try {
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
if (httpEntity != null) {
InputStream is = httpEntity.getContent();
result = StringUtils.convertStreamToString(is);
Log.i(TAG, "Result: " + result);
}
} catch (ClientProtocolException e) {
Log.e(TAG, "ClientProtocolException: " + e);
} catch (IOException e) {
Log.e(TAG, "IOException: " + e);
}
return result;
我认为我已经遵循了有关如何创建参数并发布它们的一般准则,但显然没有。
此时非常欢迎任何帮助或指向我在哪里可以找到解决方案的指示(在花了几个小时意识到没有发送任何发布数据之后)。真实的服务器在 Tomcat 上运行 Wicket,但我也在一个简单的 PHP 页面上对其进行了测试,没有任何区别。