Java 如果指定了端口,HttpGet将返回500错误

Java 如果指定了端口,HttpGet将返回500错误,java,http,Java,Http,我们的一个开发人员报告了以下错误 HttpGet foo = new HttpGet("http://www.example.com/path/to/file.xml"); 很好 但是,如果指定了端口 HttpGet foo = new HttpGet("http://www.example.com:80/path/to/file.xml"); 服务器返回HTTP 500错误 我已经验证了该网站在标准HTTP端口80上运行。这种行为的原因可能是什么?它看起来像是服务器端,因为这两行代码对其他

我们的一个开发人员报告了以下错误

HttpGet foo = new HttpGet("http://www.example.com/path/to/file.xml");
很好

但是,如果指定了端口

HttpGet foo = new HttpGet("http://www.example.com:80/path/to/file.xml");
服务器返回HTTP 500错误


我已经验证了该网站在标准HTTP端口80上运行。这种行为的原因可能是什么?它看起来像是服务器端,因为这两行代码对其他网站都可以正常工作。

查看服务器的日志应该会提供更多信息,其中到底出了什么问题(状态代码500表示服务器遇到了问题)但我猜,在URL后面配置了某种脚本,用于处理HTTP请求头
主机
的值,不需要端口规范,因此会出现错误

另一个原因可能是您和服务器之间的代理出错,但我发现这比上述理论更难相信


请提供服务器的错误日志,以便能够对此进行更多说明。

查看服务器日志应该会提供更多信息,了解到底哪里出了问题(状态代码500表示服务器遇到了问题)但我猜,在URL后面配置了某种脚本,用于处理HTTP请求头
主机
的值,不需要端口规范,因此会出现错误

另一个原因可能是您和服务器之间的代理出错,但我发现这比上述理论更难相信


请提供服务器的错误日志,以便能够对此进行更多说明。

如果您向URL添加端口,则@AxelH可能不会重复,或者HttpClient是否会自动切换到分块传输?@AxelH,并且对该答案的反馈是仍然会导致“错误400错误请求”。很明显,这不起作用,这是一个与这个问题完全不同的错误类型。可能是@AxelH的重复,也可能不是,或者如果您将端口添加到URL,HttpClient是否会自动切换到分块传输?@AxelH对此答案的反馈是,它仍然会导致“错误400错误请求”。很明显,这不起作用,这是一种与此问题完全不同的错误类型。不幸的是,我们无法访问远程服务器
www.example.com
,因此故障排除非常有限。但是谢谢您的回答。@dr01您可以询问服务器的所有者是否可以告诉您更多信息。要排除代码,您可以尝试在浏览器中使用第二个URL和端口规范。如果您看到相同的错误,这肯定是服务器上的问题。如果它能工作,如果浏览器识别标准端口并在请求中忽略它,它可能仍然是一个。不幸的是,我们无法访问远程服务器
www.example.com
,因此故障排除非常有限。但是谢谢您的回答。@dr01您可以询问服务器的所有者是否可以告诉您更多信息。要排除代码,您可以尝试在浏览器中使用第二个URL和端口规范。如果您看到相同的错误,这肯定是服务器上的问题。如果它能工作,那么如果浏览器识别出标准端口并在请求中忽略它,它可能仍然是一个。