我有以下代码:
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未经授权的访问/缓存访问被拒绝错误。我需要包含哪些代码才能通过代理进行身份验证?
答案 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提到
希望这会有所帮助!!