如何在Android中将JSON参数作为Web服务请求发送?

时间:2012-11-25 05:49:32

标签: java android json web-services httpclient

  

可能重复:
  How to send a JSON object over Request with Android?

由于我是Android开发的新手,我遇到了以JSON的形式向Web服务发送请求的问题。谷歌搜索,我发现the following code使用参数发送请求。以下是我们以以下形式发送参数的Java类:

Main.java

RestClient client = new RestClient(LOGIN_URL);
client.AddParam("Email", _username);
client.AddParam("Passwd", _password);

try {
  client.Execute(RequestMethod.POST);
} catch (Exception e) {
  e.printStackTrace();
}
String response = client.getResponse();

但是在这里我想以JSON的形式发送参数,例如我想以这种形式发送参数:

{
  "login":{
    "Email":_username,
    "Passwd":_password,
  }
}

那么,任何人都可以帮助我吗?如何以JSON格式发送参数?

1 个答案:

答案 0 :(得分:3)

您发布的示例使用由某人组成的“库”作为Apache的HttpClient类的包装器。这不是一个特别好的。但是你根本不需要使用那个包装器,HttpClient本身很容易使用。以下是您可以构建的代码示例:

final String uri = "http://www.example.com";
final String body = String.format("{\"login\": {\"Email\": \"%s\", \"Passwd\": \"%s\"}", "me@email.com", "password");

final HttpClient client = new DefaultHttpClient();
final HttpPost postMethod = new HttpPost(uri);
postMethod.setEntity(new StringEntity(body, "utf-8"));

try {
    final HttpResponse response = client.execute(postMethod);
    final String responseData = EntityUtils.toString(response.getEntity(), "utf-8");
} catch(final Exception e) {
    // handle exception here
}

请注意,您很可能正在使用JSON库来序列化POJO并创建请求JSON。