尝试使用Java发送请求时出错407

时间:2016-12-12 11:09:58

标签: java proxy request

我有以下代码:

public class SendRequest {

public static void main(String[] args) throws ClientProtocolException, IOException {

    String url = "http://backoffice.xyz";

    HttpHost proxy = new HttpHost("proxy.proxy", 8080, "http");
    HttpClient client = HttpClientBuilder.create().setProxy(proxy).build();
    HttpGet request = new HttpGet(url);

    //request.addHeader("User-Agent", "USER-AGENT");
    HttpResponse response = client.execute(request);

    System.out.println("Response Code: " + response.getStatusLine().getStatusCode());

    BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

    StringBuffer result = new StringBuffer();
    String line = "";
    while((line = rd.readLine()) != null){
        result.append(line);
    }
        System.out.println(result.toString());

}

}

这将返回407未经授权的访问/缓存访问被拒绝错误。我需要包含哪些代码才能通过代理进行身份验证?

2 个答案:

答案 0 :(得分:1)

您的代理是否需要基于用户名/密码的身份验证?如果是这样,请尝试实现java.net.Authenticator。我想你需要设置useSystemProperties

Authenticator.setDefault(new Authenticator(){ PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(username, password); } });

您可能需要将setDefaultCredentialsProvider(CredentialsProvider credentialsProvider)添加到HTTPClientBuilder并使用SystemDefaultCredentialsProvider实例。

答案 1 :(得分:0)

1.你可以查一下你的代理吗?我不确定proxy.proxy是否正确。

你剩下的代码似乎很好。

2.并确保您将httpcore版本更新为4.4或更高版本。此外,您还可以将httpcore更新为最新版本。

3.您可以检查代理的身份验证为@Goutham提到

希望这会有所帮助!!