如何使用 AsyncHttpClient 发送 JSON 正文?
Posted
技术标签:
【中文标题】如何使用 AsyncHttpClient 发送 JSON 正文?【英文标题】:How can I send a JSON body with AsyncHttpClient? 【发布时间】:2019-03-12 06:47:24 【问题描述】:我正在使用AsyncHttpClient 库从一个非常基本的 android 应用程序发出 HTTP 请求。现在,我只需要使用 JSON 主体发出 POST 请求(这是一个强制性约束,因为我必须使用 REST 服务使用包含用户名和密码的期望请求)。
对 Android 开发和相关库了解不多,我尝试向 Google 发出一个简单的 GET 请求,并且效果很好。然后,我尝试切换到 POST 请求,但从文档看来,post 方法严格需要 RequestParams 参数。
我真的需要发送一个JSON:有没有办法用AsyncHttpClient
这样做?我尝试了几种在 Web 和 *** 上都找到的解决方案,但遗憾的是没有一个有效。
最后,作为最后的机会,我愿意切换库(并且也欢迎向这个方向提出建议 - 至少如果它们像 AsyncHttpClient
那样易于使用,考虑到我的经验) ,但我更愿意坚持我目前的选择。
感谢您的帮助。
【问题讨论】:
【参考方案1】:首先,我建议你使用改造库,它简单、有用且可爱 但是现在,我们应该知道您是如何发帖的, 例如,您是否对此进行测试:
private static AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("param1", "Test");
client.post(Url, params, responseHandler);
JSONObject jsonParams = new JSONObject();
jsonParams.put("param1", "Test");
StringEntity entity = new StringEntity(jsonParams.toString());
client.post(context, Url, entity, "application/json",responseHandler);
【讨论】:
您的解决方案非常接近我最终采用并且有效的解决方案。无论如何,要使其正常工作,必须包含 cz.msebera.android.httpclient.entity.StringEntity:如果您从另一个库导入 StringEntity,它将与声明的 post 方法的签名不匹配通过 AsyncHttpClient (这就是为什么它对我不起作用的原因)。以上是关于如何使用 AsyncHttpClient 发送 JSON 正文?的主要内容,如果未能解决你的问题,请参考以下文章
HttpClient学习—— AsyncHttpClient使用