android - Android 请求中的 Post 参数

标签 android post parameters request

我正在开发一个 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/

相关文章:

php - 来自php的Ajax响应,在div内回显span?

android - 如何知道用户正在查看哪个 fragment ?

android - 尝试构建发行版后,Android崩溃

api - 在 REST 中使用什么方法进行同步操作

java - 我无法发送 HTTP 请求(500 内部服务器错误)

c++ - 构造函数中的默认模板参数

java - 调整图像文件大小保留jpg Exif信息

Python代码对象、函数和默认参数

android - 实现包含其他 Parcelable 的 Parcelable 时出现问题

android - 在 Android 中使用 RxJava 窗口或缓冲区进行批处理?