2

我尝试了 2 个小时,但无法正常工作。这就是我所做的:

  1. grails add-proxy myproxy "--host=<host>" "--port=<port>" "--username=<username>" "--password=<psw>"
    grails use-proxy myproxy
    

    我收到连接被拒绝错误,这意味着代理无法正常工作

  2. 在我的 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: Proxy Authentication Required

我不知道如何为代理设置用户/psw 以使其工作

我尝试了java方式,不工作

    System.setProperty("http.proxyUser", username);
    System.setProperty("http.proxyPassword", password);

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

有谁知道如何做到这一点?

4

2 回答 2

1

不知道它是否会起作用,但这里有一些代码表明你应该这样做:

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}"
    }
}
于 2013-08-02T08:32:49.000 回答
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])
于 2019-08-27T11:55:55.433 回答