gpt4 book ai didi

java - getInputStream() 在 POST 请求上挂起

转载 作者:可可西里 更新时间:2023-11-01 16:26:00 26 4
gpt4 key购买 nike

我的问题是 getInputStream() 在发布到服务器后尝试打开流时挂起。服务器是用 python 编写的,它给出了一条错误消息,让我相信它无法正确解析我的查询字符串。请帮助我诊断这个问题。

我正在使用以下代码发布到网络服务器:

String boundarySolo = "--158211729626281";
String boundary = boundarySolo + "\r\n";
String contentHeader = "Content-Disposition: form-data; name=\"";
URL requestUrl;
URLConnection connection;
String queryString = new String();

try{
requestUrl = new URL(config.getServerUrl());
connection = requestUrl.openConnection();
connection.setReadTimeout(1000);
connection.setDoOutput(true);
connection.setDoInput(true);

connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundarySolo);

. . .

    outStream = new DataOutputStream(connection.getOutputStream());

System.out.println("Writing bytes...");
outStream.writeUTF(queryString);
System.out.println("Bytes written");
outStream.flush();
System.out.println("Buffer flushed.");
outStream.close();
System.out.println("Stream closed.");

try{
inStream = new DataInputStream(connection.getInputStream());
String buffer;

System.out.println("Entering the loop.");

while((buffer = inStream.readLine())!= null)
System.out.println(buffer);

System.out.println("Leaving the loop.");

}
catch (SocketTimeoutException e) {
System.out.println("Socket timed out.");
}

查询字符串由以下组成(每行末尾有 \r\n):

  --158211729626281
Content-Disposition: form-data; name="view"

a
--158211729626281
Content-Disposition: form-data; name="termdb"

Saccharomyces_cerevisiae.etd
--158211729626281
Content-Disposition: form-data; name="raw_weights"

blank
--158211729626281
Content-Disposition: form-data; name="MAX_FILE_SIZE"

256
--158211729626281
Content-Disposition: form-data; name="cutoff_Evalue"

0.01
--158211729626281
Content-Disposition: form-data; name="min_term_size"

2
--158211729626281
Content-Disposition: form-data; name="effective_tdb_size"

0
--158211729626281
Content-Disposition: form-data; name="stats"

wsum
--158211729626281
Content-Disposition: form-data; name="transform_weights"

null
--158211729626281
Content-Disposition: form-data; name="cutoff_type"

none
--158211729626281
Content-Disposition: form-data; name="output"

tab
--158211729626281--

最佳答案

如果我没记错的话,URLConnection#getInputStream() 是实际将请求发送到服务器的(如果写入输出流的请求不够大而无法导致刷新)。然后它会挂起,直到从服务器刷新响应。

可以在服务器上调试吗?这样你就可以知道它走了多远以及为什么连接保持打开状态。如果服务器要关闭连接,我希望客户端出现异常。

如果您使用的是 Eclipse,请使用 Window 菜单 -> Show View -> Other,然后选择 TCP/IP Monitor。您可以使用它来真正查看通过线路发送的内容。

关于java - getInputStream() 在 POST 请求上挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6669934/

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