gpt4 book ai didi

java - 如何防止Java客户端使用系统代理?

转载 作者:行者123 更新时间:2023-11-30 07:32:12 27 4
gpt4 key购买 nike

这段代码确实使用了代理,读取网页并将其作为字符串返回

    public String getPageFromProxy(String urlAdress) {

try {
URL url = new URL(urlAdress);
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(System.getProperty("http.proxyHost"), Integer.valueOf(System.getProperty("http.proxyPort"))));
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
String authString = System.getProperty("http.proxyUser") + ":" + System.getProperty("http.proxyPassword");
authString = Text.getBase64Encoded(authString);
uc.setRequestProperty("Proxy-Authorization", authString);
uc.connect();
InputStream in = url.openStream();
StringBuilder sb = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String read;
while ((read = br.readLine()) != null) {
sb.append(read);
}

br.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}

正如你所看到的,我已经做了很多尝试,让它真正使用具有某些给定凭据的代理。我还按照 stackoverflow 上的建议覆盖了 java.net.Authenticator。然而事实证明 Java 客户端不提供任何凭据。该代码仅在代理给出 407 答案后客户端从用户处获取系统代理设置时才起作用

这确实显示为空

System.out.println("Proxy is system " + System.getProperty("java.net.useSystemProxies"));

如何在 Java 7 中正确设置代理以仅使用给定的凭据?

感谢您提供有关调试此问题的任何提示!

最佳答案

您已经完成了大量工作来设置代理连接,然后您忽略这一切并打开一个全新的连接:

InputStream in = url.openStream();

您可能想在代理连接上打开输入流:

InputStream in = uc.getInputStream();

关于java - 如何防止Java客户端使用系统代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942077/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com