gpt4 book ai didi

java - 服务器不响应使用 Java 的 HTTP/1.1 客户端中的并发请求

转载 作者:行者123 更新时间:2023-12-01 05:24:56 26 4
gpt4 key购买 nike

我正在尝试针对远程 HTTP 服务器实现一个简单的 HTTP/1.1 客户端应用程序。如果我收到来自服务器的 301 Moved Permanently 响应,我将尝试从服务器响应中给出的新位置下载该文件。我能够向服务器发送第一条 GET 消息并检索我请求的文件被移动到的新 URL。

问题是,当我从客户端发送第二个带有文件新位置的 GET 请求时,服务器返回 null。不确定写入客户端消息或读取服务器响应是否出现问题。这是我的代码,感谢任何帮助。

else if(serverMessage.equals("HTTP/1.1 301 Moved Permanently"))
{
System.out.println(" A new permanent URL is assigned to the file " + fileName);
serverMessage="";
lineCount=0;
while((serverMessage = reader.readLine()) != null)
{
lineCount++;
System.out.println("reply: " + serverMessage);
if(serverMessage.indexOf("Location") >= 0 )
{
for(int x=serverMessage.indexOf("Location")+10; x<serverMessage.length(); x++)
{
newURL= newURL + serverMessage.charAt(x);
}
}

}
System.out.println("newURL : " + newURL);
host = findHost(newURL);

path = findPath(newURL);

fileName=findFileName(newURL);

clientMessage = "GET ";
clientMessage = clientMessage + path;
clientMessage = clientMessage + " HTTP/1.1\r\nHost: ";
clientMessage = clientMessage + host;
clientMessage = clientMessage + "\r\n\r\n";

System.out.println("client message: \"" + clientMessage +"\"");

writer.newLine();
writer.write(clientMessage);
writer.flush();

serverMessage = reader.readLine();
System.out.println("reply2: " + serverMessage); //returns null!!!

while((serverMessage=reader.readLine())!=null)
{
System.out.println("reply2: " + serverMessage);
}

}

编辑:客户端消息的变量如下(它们都正常工作,对现有文件进行了测试 - 成功下载!)

新网址:http://wlab.cs.bilkent.edu.tr/~cs421/pa1/302-redirect-success.txt
主机2:wlab.cs.bilkent.edu.tr
路径2:/~cs421/pa1/302-redirect-success.txt
文件名2:302-redirect-success.txt

最佳答案

您是否使用持久的URLConnection/HttpURLConnection

如果服务器已关闭连接,您可能会收到 null

如果您使用持久连接,服务器可能没有时间响应。

This可能会更好地描述问题。查看 doHttpUrlConnectionAction(StringdesiredUrl) 中给出的超时。您可能会在那里找到答案。

如果这是您的问题,您可以尝试以 0.1 秒的间隔进行多次读取,例如 ... 1-5 秒。这是为了确保您快速获得响应,而不必等待完整的超时来确保服务器已响应。

关于java - 服务器不响应使用 Java 的 HTTP/1.1 客户端中的并发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com