Java 连接到URL失败,但当我直接在浏览器中尝试时,它成功了
下面的代码段尝试将2个参数和URL一起发送到servlet。但当我尝试这个片段时,我得到一个信息:Java 连接到URL失败,但当我直接在浏览器中尝试时,它成功了,java,servlets,httpconnection,Java,Servlets,Httpconnection,下面的代码段尝试将2个参数和URL一起发送到servlet。但当我尝试这个片段时,我得到一个信息: Connection to file server failed 但如果我直接尝试URL: http://localhost:8084/nappster/ReceiveFileName?fileName=" + fileName + "&ip=" + IP 有了这些数据,就没有问题了。Servlet接收文件名并按预期处理它。当我尝试通过代码连接到URL时,在浏览器中尝试时失败并成功的原
Connection to file server failed
但如果我直接尝试URL:
http://localhost:8084/nappster/ReceiveFileName?fileName=" + fileName + "&ip=" + IP
有了这些数据,就没有问题了。Servlet接收文件名并按预期处理它。当我尝试通过代码连接到URL时,在浏览器中尝试时失败并成功的原因可能是什么
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String fileName = request.getParameter("FileTag");
String IP = new ClientAddress().getNetworkIP();
// Send the file name to the nappster server
URL url = new URL("http://localhost:8084/nappster/ReceiveFileName?fileName=" + fileName + "&ip=" + IP);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
if(connection.getResponseCode() == 200) {
// File name sent successfully to the server
System.out.println("Connection to file server successful");
System.out.println("--------");
} else {
// Unable to send file name to the server
System.out.println("Connection to file server failed");
}
}
注意:
尝试上述代码段时返回的响应代码是505尝试使用
url.encode()
方法 尝试使用url.encode()
方法 您传递的信息可能包含字母、数字和一些在URL字符串中有意义的特殊字符。为了避免这种情况,我们使用了编码。请检查您的文件名或ip参数是否包含这些内容。然后我可以在浏览器中直接访问URL。这是怎么回事?浏览器在发布到服务器之前默认会对URL进行编码。请共享您现在获得的实际URL和响应代码。有关如何使用URL编码器正确编码URL的示例,请参阅。您传递的信息可能包含字母字符、数字、,以及一些在URL字符串中有意义的特殊字符。为了避免这种情况,我们使用了编码。请检查您的文件名或ip参数是否包含这些内容。然后我可以在浏览器中直接访问URL。这是怎么回事?在发布到服务器之前,浏览器默认会对URL进行编码。请共享您现在获得的实际URL和响应代码。有关如何使用URL编码器正确编码URL的示例,请参阅。在浏览器中可能会出现您没有注意到的重定向-尝试打印更多数据,而不仅仅是System.out.println(“与文件服务器的连接失败”);返回的responseCode
是什么?当您获得响应代码时,是否可以打印Connection.getResponseCode()
的值?这是不支持的HTTP版本…我认为HttpUrlConnection仅是v1.0版,您可能需要尝试类似HttpComponents()相反-服务器可能需要1.1。@cjsethno但当我在另一个servlet中尝试时,它工作正常。例如http://localhost:8084/nappster/ReceiveInformation?“+信息
浏览器中可能存在您没有注意到的重定向-尝试打印更多数据,而不仅仅是System.out.println(“与文件服务器的连接失败”);返回的responseCode
是什么?当您获得响应代码时,是否可以打印Connection.getResponseCode()
的值?这是不支持的HTTP版本…我认为HttpUrlConnection仅是v1.0版,您可能需要尝试类似HttpComponents()相反-服务器可能需要1.1。@cjsethno但当我在另一个servlet中尝试时,它工作正常。例如http://localhost:8084/nappster/ReceiveInformation?“+信息