Java HttpClient出现404错误

3

我正在使用Java HttpClient包进行http请求。但是我遇到了404错误。当我用curl尝试相同的请求时,它可以正常工作。以下是curl请求示例 -

curl -i -X POST http://api/endpoint -H "Content-Type: application/json" -d 'content'

这是我使用的Java代码来实现上述curl请求 -

HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("http://api/endpoint");
post.setHeader("Content-type", "application/json");

post.setEntity(new StringEntity(content));

HttpResponse response = client.execute(post);
logger.info("Response Code : "
            + response.getStatusLine().getStatusCode());

BufferedReader rd = new BufferedReader(
                new InputStreamReader(response.getEntity().getContent()));

StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
    result.append(line);
}
logger.info("Response details "+result);

当我运行这段Java代码时,出现了错误404 NOT FOUND。问题可能是什么?


1
这两个测试不同,使用HttpClient您可以设置“Accept”HTTP标头。请将其添加到curl中以确保相同。 - Mario Santini
@MarioAlexandroSantini 我已经从Java代码中将其删除。但是在curl可用的情况下仍然收到404错误。 - krackoder
你是否使用代理? - Mario Santini
@MarioSantini 我也遇到了同样的问题,而且是在Squid代理下。请问有什么帮助或指针吗? - ROCKY
1
@ROCKY 如果你需要通过代理访问,你只需要配置连接来处理它。在这里,你可以找到一个简单的例子,但是你也可以在Java的任何库中实现它 https://www.tutorialspoint.com/apache_httpclient/apache_httpclient_using_proxy.htm - Mario Santini
1个回答

1

删除post.setHeader("Accept", "application/json");


运行完美!还可以添加通配符内容类型。 - Gaurav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接