将HTTP 407错误作为IOException

我在我的Android应用程序中使用HttpURLConnection通过需要身份validation的代理。 这是我的代码,我会在遇到问题后解释你。

 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。但是在这里我只得到了一个exception,但没有带有407值的响应代码。

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

任何想法将不胜感激。 谢谢。

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

HttpResponseExceptionIOException的子类,我认为这是抛出的实际exception。

http://developer.android.com/reference/org/apache/http/client/HttpResponseException.html了解更多信息。)