V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
JCJD
V2EX  ›  问与答

我在使用 apache http client 库发送 http 请求时,遇到了一个奇怪的问题

  •  
  •   JCJD · 2021-11-04 16:13:54 +08:00 · 493 次点击
    这是一个创建于 898 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于我发送的 http 请求的说明(如果需要其它信息,我随时补充):

    post 请求

    Content-Type: application/json

    Content-Length: 1277

    如果我在发送给请求的时候,加上 Expect: 100-continue 这个 header ,请求就会成功;没有这个 header 请求就失败 SocketTimeoutException ,错误日志:

    java.net.SocketTimeoutException : Read timed out
    	at java.net.SocketInputStream.socketRead0(Native Method)
     	at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
     	at java.net.SocketInputStream.read(SocketInputStream.java:171)
     	at java.net.SocketInputStream.read(SocketInputStream.java:141)
     	at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
     	at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
     	at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:282)
     	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
     	at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
     	at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
     	at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
     	at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165)
     	at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
     	at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
     	at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
     	at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
     	at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
     	at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
     	at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
     	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
     	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
    

    我重复了很多次,携带 headerExpect: 100-continue就成功,不带就失败(偶尔也会成功)。

    实在搞不懂为什么,求教 v 友

    jxxz
        1
    jxxz  
       2021-11-04 18:12:39 +08:00
    这个 read timeout ,有可能是服务端的问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2916 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:43 · PVG 16:43 · LAX 01:43 · JFK 04:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.