java代理和web服务身份验证

java代理和web服务身份验证,java,web-services,authentication,proxy,Java,Web Services,Authentication,Proxy,我试图访问一个需要身份验证的web服务,但我也支持一个需要自己身份验证的代理。 当web服务URL没有身份验证时,可以通过代理服务器获取结果。但是,当web服务需要身份验证时,它根本不起作用。我得到以下错误: Exception in thread "main" java.net.ProtocolException: Server redirected too many times 下面是我的代码: Authenticator auth = new Authenticator() {

我试图访问一个需要身份验证的web服务,但我也支持一个需要自己身份验证的代理。 当web服务URL没有身份验证时,可以通过代理服务器获取结果。但是,当web服务需要身份验证时,它根本不起作用。我得到以下错误:

Exception in thread "main" java.net.ProtocolException: Server redirected too many  times
下面是我的代码:

Authenticator auth = new Authenticator() {
    public PasswordAuthentication getPasswordAuthentication() {

    if(getRequestorType() == Authenticator.RequestorType.PROXY)
    {   //for proxy
      return (new PasswordAuthentication("user", "pass".toCharArray()));
    }
    else
    {  // for web service   
     return (new PasswordAuthentication("user2", "pass2".toCharArray())); 
     }
     }
     };
    Authenticator.setDefault(auth);
    SocketAddress addr = new
                         InetSocketAddress("proxy addr", port no);

    Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
    URL url = new URL("...");
    URLConnection yc = query.openConnection(proxy);
    BufferedReader in = new BufferedReader(
                            new InputStreamReader(
                            yc.getInputStream()));
    String inputLine;

    while ((inputLine = in.readLine()) != null) 
        System.out.println(inputLine);
    in.close();

这是我的第一个问题。任何帮助都将不胜感激。

URL不一样。请求URL使用HTTP,重定向URL使用HTTPS。可能发生的情况是,服务向代理发送重定向请求,但代理仍然不断地请求HTTP URL。有些代理就是这种行为

在初始请求中切换到使用HTTPS。我对相关服务器的HTTP调用导致重定向到HTTPS,而HTTPS调用导致401

HTTP/1.1 401不支持您提供的授权类型。 仅支持Basic和OAuth


您的请求调用进入了重定向循环,这可能是由于几个原因造成的。为了缩小范围,您可以发布对服务的完整HTTP请求+响应吗?@DeepakBala我得到的响应代码为302,重定向位置与HTTP请求url相同。顺便说一句,这是HTTP请求:尝试了你的建议,它成功了!真是太感谢你了。我只是回顾了服务器的文档,它说使用https——我不知道我怎么会错过它。尽管授权似乎对我有效,但我对Basic和OAuth了解不多,但我会查阅它以了解更多信息。你节省了我很多时间。干杯