首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为IOException获取HTTP407错误

作为IOException获取HTTP407错误
EN

Stack Overflow用户
提问于 2013-09-20 00:24:55
回答 2查看 1.8K关注 0票数 4

我在我的安卓应用程序中通过代理使用HttpURLConnection,其中需要身份验证。这是我的代码,我会在我的问题之后向你解释。

代码语言:javascript
复制
HttpURLConnection connection = null;
int responseCode = -1;
try {
    connection = (HttpURLConnection) myUrl.openConnection();
    connection.setInstanceFollowRedirects(false);
    connection.setConnectTimeout(DEFAULT_TIMEOUT);
    connection.setReadTimeout(DEFAULT_TIMEOUT);

    responseCode = connection.getResponseCode();
    System.out.println("ResponseCode = " + responseCode);
} catch (IOException e) {
    System.out.println("Exception : " + e.getMessage());
}

我的问题是我在getResponseCode()方法上得到了一个异常,它包含以下消息:Failed to authenticate with proxy。通常,此特定错误具有http错误代码: 407。但在这里,我只是得到了一个异常,而不是一个值为407的响应码。

我有一个解决方案来应用登录和密码来连接到代理,但我只想在出现407错误的情况下应用这个解决方案(而不是每次都捕获异常)。

任何想法都将受到感谢。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-06-05 14:22:10

尽管这个问题很古老,但我没有找到一个具体的答案,所以仅供参考:

根据我对Java8的观察,示例中的getResponseCode是实际请求服务器的第一个方法,这就是为什么您将在该行上获得IOException的原因。

在幕后,getInputStream是实际建立连接的触发器,但是我不建议直接使用它(因为实现可能会改变)。不幸的是,调用connections.connect()并不能像预期的那样工作,也不会抛出异常。

最后,在抛出异常之后,connection.getResponseCode()也会工作,这将是即使发生异常也能获得响应代码的关键:

代码语言:javascript
复制
HttpURLConnection connection = null;
int responseCode = -1;
try {
    connection = (HttpURLConnection) myUrl.openConnection();
    connection.setInstanceFollowRedirects(false);
    connection.setConnectTimeout(DEFAULT_TIMEOUT);
    connection.setReadTimeout(DEFAULT_TIMEOUT);

    responseCode = connection.getResponseCode();
} catch (IOException e) {
    responseCode = connection.getResponseCode();
}
System.out.println("ResponseCode = " + responseCode);
票数 0
EN

Stack Overflow用户

发布于 2014-08-30 03:55:20

请尝试捕获HttpResponseException,并检查它的状态代码(.getStatusCode()),看看它是否为407 (或者更好的是,使用HttpURLConnection.HTTP_PROXY_AUTH,更具可读性)。

HttpResponseExceptionIOException的子类,我认为这就是抛出的实际异常。

(有关详细信息,请访问http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html。)

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18900143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档