我正在开发一个 Android 应用程序,但在对我自己的服务器发出请求时遇到了问题。我用 Play Framework 创建了服务器,并从 Json 获取参数:
response.setContentTypeIfNotSet("application/json; charset=utf-8");
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(getBody(request.body));
Long id =jsonElement.getAsJsonObject().get("id").getAsLong();
当我对我的服务器发出 GET 请求时,一切正常。但是当我发出 POST 请求时,我的服务器返回一个未知错误,关于 JSON 格式错误或无法找到该元素。
private ArrayList NameValuePair> params;
private ArrayList NameValuePair> headers;
...
case POST:
HttpPost postRequest = new HttpPost(host); // Add headers for(NameValuePair h : headers) { postRequest.addHeader(h.getName(), h.getValue()); } if(!params.isEmpty()) { postRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); } executeRequest(postRequest, host); break;
我尝试处理请求的参数,但失败了:
if(!params.isEmpty()) {
HttpParams HttpParams = new BasicHttpParams();for (NameValuePair param : params) { HttpParams.setParameter(param.getName(), param.getValue()); } postRequest.setParams(HttpParams); }
并且有不同的错误,取决于我提出的要求。它们都是'play.exceptions.JavaExecutionException':
- 'com.google.gson.stream.MalformedJsonException'
- '这不是 JSON 对象'
- '期望找到的对象:“id”'
我希望有人能帮助我。
最佳答案
这是发送 HTTP Post 的简单方法。
HttpPost httppost = new HttpPost("Your URL here");
httppost.setEntity(new StringEntity(paramsJson));
httppost.addHeader("content-type", "application/json");
HttpResponse response = httpclient.execute(httppost);
你最好直接使用 JSON 字符串而不是在这里解析它。希望对你有帮助
关于android - Android 请求中的 Post 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455693/