我尝试了2个小时但无法使其正常工作。 这就是我所做的:
grails add-proxy myproxy "--host=<host>" "--port=<port>" "--username=<username>" "--password=<psw>"
grails use-proxy myproxy
我收到连接拒绝错误,这意味着代理无法正常工作
在我的groovy文件中,我添加了代理
def http = new HTTPBuilder("http://http://headers.jsontest.com/")
http.setProxy(host, port, "http");
http.request(Method.GET, JSON) {
uri.path = '/'
response.success = { resp, json ->
.....
}
}
然后我得到groovyx.net.http.HttpResponseException:需要代理身份验证
我无法弄清楚如何设置代理的用户/ psw以使其正常工作
我试过java方式,没有工作
System.setProperty("http.proxyUser", username);
System.setProperty("http.proxyPassword", password);
和
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, .toCharArray());
}});
有谁知道怎么做?
答案 0 :(得分:1)
不知道它是否有效,但有some code over here表明你应该这样做:
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*
import org.apache.http.auth.*
def http = new HTTPBuilder( 'http://www.ipchicken.com' )
http.client.getCredentialsProvider().setCredentials(
new AuthScope("myproxy.com", 8080),
new UsernamePasswordCredentials("proxy-username", "proxy-password")
)
http.setProxy('myproxy.com', 8080, 'http')
http.request( GET, TEXT ){ req ->
response.success = { resp, reader ->
println "Response: ${reader.text}"
}
}
答案 1 :(得分:0)
代理身份验证使用不同的HTTP标头(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Proxy-Authorization),因此只需添加标头即可为您工作。
String basicAuthCredentials = Base64.getEncoder().encodeToString(String.format("%s:%s", username,password).getBytes());
http.setHeaders(['Proxy-Authorization' : "Basic " + basicAuthCredentials])