Win*_*nie 6 java http-authentication
我已经搜索了许多处理过这个HttpRetryException问题的人的地方,但我找到的所有问题都遇到了一些名为CXF的apache服务,我没有使用它.我使用的是java.net.HttpURLConnection.我创建一个连接,使用setRequestProperty进行"授权",获取输出流,写入一堆字节,然后尝试读取回复输入流.大部分时间都有效,但有时我会得到上面提到的例外.我无法避免流式传输,因为有时我需要编写比存储在内存中更大的文件,无论如何,我发现搜索的大部分结果都表明这不是真正的问题.他们通常提供解决方案,bindingProvider.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "username");
bindingProvider.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "password");
我不使用cxf或任何其他包装器通过HttpURLConnection,并且没有服务或绑定提供程序来引用.使用setRequestProperty设置的用户名和密码在大多数情况下都可以正常进行身份验证.我希望我能说出可靠地复制错误所需的特定前提条件,但到目前为止它已被击中或未命中.
mha*_*ler 10
JDK中只有一个位置java.net.HttpRetryException被抛出,就是在使用HttpURLConnection并尝试遵循重定向的情况下(参见sun.net.www.protocol.http.HttpURLConnection.followRedirect())
所以基本上,服务器响应HTTP状态代码为3xx(304和306除外),现在尝试跟随Location:HTTP标头给出的位置.但由于启用了流式传输,因此无法遵循重定向.
尝试设置 java.net.HttpURLConnection.setInstanceFollowRedirects(false)
虽然我宁愿检查服务器首先发送HTTP重定向的原因.根据您的描述,我了解您使用HTTP POST执行更大的上传,这是正确的吗?