Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从套接字读取时,Java BufferedReader转换循环挂起_Java_Http_Parsing_Sockets_Bufferedreader - Fatal编程技术网

从套接字读取时,Java BufferedReader转换循环挂起

从套接字读取时,Java BufferedReader转换循环挂起,java,http,parsing,sockets,bufferedreader,Java,Http,Parsing,Sockets,Bufferedreader,我正在编写一个软件,通过HTTP 1.0将外部源(我几乎无法控制)连接到Java中的本地数据库。我试图在连接关闭之前从响应主体中的数据库返回信息(外部源有一个非常宽松的超时时间表)。我正在使用一个BufferedReader从套接字读取流,但是身体的大部分(我们唯一可以控制的部分)在读取之前就被切断了。解决方法是在正文中添加两行新行(\n)以强制数据通过,但我觉得这可能解决了一个更大的问题 是否有一种替代BufferedReader的方法可以在套接字停止写入其缓冲区时发出信号,或者我是否误用了B

我正在编写一个软件,通过HTTP 1.0将外部源(我几乎无法控制)连接到Java中的本地数据库。我试图在连接关闭之前从响应主体中的数据库返回信息(外部源有一个非常宽松的超时时间表)。我正在使用一个
BufferedReader
从套接字读取流,但是身体的大部分(我们唯一可以控制的部分)在读取之前就被切断了。解决方法是在正文中添加两行新行(
\n
)以强制数据通过,但我觉得这可能解决了一个更大的问题

是否有一种替代
BufferedReader
的方法可以在套接字停止写入其缓冲区时发出信号,或者我是否误用了
BufferedReader
?一些代码:

正在接受来自服务器的连接:

并将缓冲区处理为字符串:

@Override
public String[] call() throws Exception 
{
    String output[] = new String[2];
    String line = new String();
    StringBuilder builder = new StringBuilder();

    while((line = input.readLine()) != null) //hangs here
    {
        if(line.startsWith("external-"))
        {
            builder.append(line + "\n");
        }
    }

    buffer = builder.toString();

    output = split(buffer);

    System.out.println("Process Request Complete");
    return output;
}

你记得刷新你的BufferedWriter吗?是的,这发生在我发送输出之后。是否应该更早发生?数据流是否真正面向行(即,它是否由
\n
分隔的行组成?最后一行是否以
\n
结尾?是的,它面向行,最后一行是否以\n结尾
@Override
public String[] call() throws Exception 
{
    String output[] = new String[2];
    String line = new String();
    StringBuilder builder = new StringBuilder();

    while((line = input.readLine()) != null) //hangs here
    {
        if(line.startsWith("external-"))
        {
            builder.append(line + "\n");
        }
    }

    buffer = builder.toString();

    output = split(buffer);

    System.out.println("Process Request Complete");
    return output;
}