我遇到此错误的问题:
**Server returned HTTP response code: 501 for URL: http://dev1:8080/data/xml/01423_01.xml**
请参阅此代码:
private static Map sendRequest(String hostName, String serviceName) throws Exception {
Map assets = null;
HttpURLConnection connection = null;
Authenticator.setDefault(new Authenticator());
URL serviceURL = new URL(hostName + "/" + serviceName);
connection = (HttpURLConnection)serviceURL.openConnection();
connection.setRequestMethod("GET");
ClientHttpRequest postRequest = new ClientHttpRequest(connection);
InputStream input = null;
/*
At line input = postRequest.post(); I get the following error
Server returned HTTP response code: 501 for URL: http://dev1:8080/data/xml/01423_01.xml
Yet if I enter that url in my browser it opens up fine.
Is this a common problem? Is there some type of content type I need to set?
*/
input = postRequest.post();
connection.disconnect();
return assets;
}
答案 0 :(得分:3)
501响应意味着“未实现”,通常用于表示服务器不理解您使用的HTTP方法(例如,获取,发布等)。
我无法识别ClientHttpRequest
,但您有一行说
connection.setRequestMethod("GET");
然后是一行
input = postRequest.post();
我不确定post()实际上做了什么,但这是否意味着发送POST请求?如果是这样,则与第一行中指定的GET相矛盾。
无论哪种方式,服务器都说它不在GET或POST方法下,无论你的代码实际发送的是哪一个。您需要找出服务器为该URL支持的方法,并使用它。
答案 1 :(得分:1)
也许你应该检查你的端口设置:
new URL(hostName + "/" + serviceName);
看起来缺少端口号“:8080”。
某些服务器希望请求中的客户端提供其他信息,例如用户代理或某些表单数据。服务器上运行的应用程序甚至可以预期cookie。您还应该检查完整的响应,而不仅仅是响应代码。
我建议你使用像httpclient这样更方便的库: http://hc.apache.org/httpcomponents-client/index.html