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

Posted

技术标签:

【中文标题】如何在 Android 中将 JSON 参数作为 Web 服务请求发送? [复制]【英文标题】:How to send JSON parameters as web service request in Android? [duplicate] 【发布时间】:2012-11-25 05:49:31 【问题描述】:

可能重复: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 的形式发送参数?

【问题讨论】:

我还没有看链接,但是当Java开发人员普遍使用camelCase时,我会警惕使用PascalCase作为方法的文章。 【参考方案1】:

您发布的示例使用某人组合的“库”作为 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。

【讨论】:

这里client.execute(postMethod)表示会调用HTTPClient类的execute方法..能不能把HTTPClient类的代码贴出来... HTTPClient 是 Apache HttpCommons 库中的一个接口。它与您的 Android 发行版捆绑在一起。这是一个有用的参考:developer.android.com/reference/org/apache/http/client/… @Perception.. 感谢您的代码。但是,如果我使用以下代码执行,我将无法从 web 服务中获得完整的响应。它正在崩溃,只有 50% 的响应。简单地说,如果我有 200 个要从 web 服务接收的数据名称,我只收到 50 个名称.. 没有收到剩余的名称。我不知道有什么问题。你能帮我解决这个问题吗.. 没问题,如果回答对您有帮助,请随时接受我的回答。另外,将您的其他问题作为单独的问题发布。 @Perception.. 请检查我发布的以下新问题.. ***.com/questions/13549289/…

以上是关于如何在 Android 中将 JSON 参数作为 Web 服务请求发送? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Springboot 在 REST 请求 URL 中将 json 对象作为参数传递

如何在 Swift 3 中使用 Alamofire 在 POST 请求中将给定的 JSON 作为参数发送?

如何在 WCF Rest Service 中将类对象作为参数传递

如何在alamofire中将参数作为字符串发送

尝试在 Moya 中将 [JSON] 作为参数值发送时出错

在返回视图中将 json 作为参数传递