我正在使用Java,Spring boot和Apache HttpClient尝试发送发布请求。我要访问的资源文档可在以下位置找到:
https://docs.enotasgw.com.br/v2/reference#incluiralterar-empresa
下面是我的代码:
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost post = new HttpPost(incluirEmpresa);
post.setHeader("Content-Type", "application/json");
post.setHeader("Accept", "application/json");
post.setHeader("Authorization", "Basic " + apiKey);
try {
StringEntity entity = new StringEntity(json);
//tried to add these two lines to see if they would fix the error, but it is the same
entity.setContentEncoding("application/json");
entity.setContentType("application/json");
post.setEntity(entity);
System.out.println(json);
System.out.println("======================");
CloseableHttpResponse response = httpClient.execute(post);
System.out.println(response.getStatusLine().getReasonPhrase() + " - " + response.getStatusLine().getReasonPhrase());
idEmpresa = response.getEntity().getContent().toString();
}
我的回答是400-错误请求。在上面的交互式文档链接上,当我发布Json时,我收到重复输入的错误,这是我期望的,因为要发送的信息已经在数据库中。
由于交互式文档返回重复错误,因此我知道问题不在我的json格式之内,而是在我的发布请求中。该文档包含有关C#的示例,但不包含基于Java的示例,这就是我正在使用的。
顺便说一句,如果相关,则json变量是一个字符串。
有人可以指出我的邮政编码有什么问题吗?
答案 0 :(得分:0)
发现我所缺少的。 在查看发送到API的内容之后,我注意到json的格式不正确。因此,我进行了一些研究,发现至少就我而言,仅设置带有内容类型的标头还不够,我还必须将被设置为HttpPost的Entity设置为做到这一点,我必须对此进行更改代码行:
StringEntity entity = new StringEntity(json);
对此:
StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);
更改之后,请求开始按预期运行。