当前位置: 首页 > 面试题库 >

如何使用Apache HttpClient发布JSON请求?

冯卓
2023-03-14
问题内容

我有类似以下内容:

final String url = "http://example.com";

final HttpClient httpClient = new HttpClient();
final PostMethod postMethod = new PostMethod(url);
postMethod.addRequestHeader("Content-Type", "application/json");
postMethod.addParameters(new NameValuePair[]{
        new NameValuePair("name", "value)
});
httpClient.executeMethod(httpMethod);
postMethod.getResponseBodyAsStream();
postMethod.releaseConnection();

它不断返回500。服务提供商说我需要发送JSON。Apache HttpClient 3.1+如何完成?


问题答案:

Apache
HttpClient对JSON一无所知,因此您需要分别构造JSON。为此,我建议从json.org检出简单的JSON-
java
库。(如果“ JSON-
java”不适合您,则json.org列出了大量可用不同语言提供的库。)

生成JSON后,您可以使用以下代码进行发布

StringRequestEntity requestEntity = new StringRequestEntity(
    JSON_STRING,
    "application/json",
    "UTF-8");

PostMethod postMethod = new PostMethod("http://example.com/action");
postMethod.setRequestEntity(requestEntity);

int statusCode = httpClient.executeMethod(postMethod);

编辑

注-问题中要求的上述答案适用于Apache HttpClient 3.1。但是,要帮助任何寻求针对最新Apache客户端实现的人:

StringEntity requestEntity = new StringEntity(
    JSON_STRING,
    ContentType.APPLICATION_JSON);

HttpPost postMethod = new HttpPost("http://example.com/action");
postMethod.setEntity(requestEntity);

HttpResponse rawResponse = httpclient.execute(postMethod);


 类似资料:
  • 问题内容: 我需要将JSON从客户端发布到服务器。我正在使用Python 2.7.1和simplejson。客户端正在使用请求。服务器是CherryPy。我可以从服务器获取硬编码的JSON(代码未显示),但是当我尝试将JSON POST到服务器时,出现“ 400 Bad Request”。 这是我的客户代码: 这是服务器代码。 有任何想法吗? 问题答案: 从Requests 2.4.2及更高版本开

  • 问题内容: 我读了一些将jsons发布到服务器的示例。 有人说: OkHttp是Java提供的HttpUrlConnection接口的实现。它提供用于编写​​内容的输入流,并且不知道(或不在乎)内容的格式。 现在,我想用名称和密码的参数对URL进行常规发布。 这意味着我需要自己将名称和值对编码为流? 问题答案: 当前接受的答案已过期。现在,如果您想创建一个发布请求并向其中添加参数,则应该使用Mul

  • 问题内容: 我对extJS和json有点陌生。使用extJS来发布json数据的最轻松的方法是什么?我对任何GUI功能都不是很感兴趣,只是使用框架发送一些示例数据。 问题答案:

  • 问题内容: 我使用Ubuntu并在其上安装了cURL。我想用cURL测试我的Spring REST应用程序。我在Java端编写了POST代码。但是,我想用cURL对其进行测试。我正在尝试发布JSON数据。示例数据如下: 我使用以下命令: 它返回此错误: 错误描述是这样的: 服务器拒绝了此请求,因为请求实体的格式不受请求方法()的请求资源支持。 Tomcat日志:“ POST / ui / weba

  • 问题内容: 我想将Json发布到同一服务器上的Web服务。但是我不知道如何使用JQuery发布Json。我已经尝试使用此代码: 但是使用此JQuery代码时,数据不会作为Json在服务器上接收。这是服务器上的预期数据:但是使用JQuery时,服务器receive 。换句话说,它是“ urlencoded”数据,而不是Json。 有什么方法可以使用JQuery以Json格式发布数据,而不是未编码的数

  • 问题内容: 如果尝试登录https://orbit.theplanet.com/Login.aspx?url=/Default.aspx(使用任何用户名/密码组合),则可以看到登录凭据以非传统集的形式发送POST数据:仅一个寂寞的JSON字符串,没有正常的key = value对。 具体来说,代替: 甚至类似: 简单来说就是: 是否可以使用或替代模块执行此类请求?我愿意这样做,但希望有更高层次的东