Autenticação Proxy SOCORRO

Pessoal estou apanhando que nem cachorro para tentar fazer meu programinha em java se autenticar no proxy e assim conseguir usar um web service externo
Consigo apensar usar web services como localhost. Quando tento acessar algum de fora me vem esse erro [color=red]407 proxy authentication required[/color]
Estou tentando fazer dessa forma

[color=darkblue] System.setProperty(“http.proxyHost”, “proxy.teste.com.br”);
System.setProperty(“http.proxyPort”, “8080”);
System.setProperty(“http.proxyUser”, “DOMINIO\meuUsuario”);
System.setProperty(“http.proxyPassword”, “minhaSenha”);[/color]

Também tentei fazer assim:

[color=darkblue] Properties props = new Properties(System.getProperties());
props.put(“http.proxySet”, “true”);
props.put(“http.proxyHost”, “proxy.teste.com.br”);
props.put(“http.proxyPort”, “8080”);
props.put(“http.proxyUser”, “DOMINIO\meuUsuario”);
props.put(“http.proxyPassword”, “minhaSenha”);
Properties newprops = new Properties(props);
System.setProperties(newprops);[/color]

Mas continuo recebendo a mensagem de erro. [color=red]407 proxy authentication required[/color]
Os dados de usuário e senha estão corretos pois são os que estou usando para navegar nesse momento.

Alguém poderia me indicar o caminho das pedras e me dizer o que estou fazendo de errado?

Ninguém sabe??? Estou a horas tentando

Bom, não sei dizer se funciona para o seu caso, mas ai vai um exemplo que encontrei que codifica usuário e senha

props.setProperty("http.proxySet", "true");
props.setProperty("http.proxyHost", "proxy.teste.com.br");
props.setProperty("http.proxyPort", "8080"); 
props.setProperty("http.proxyType", "4");  // Não sei o tipo de autenticação que você precisa, no exemplo está este
String userid = new sun.misc.BASE64Encoder().encode("DOMINIO\meuUsuario".getBytes());
String password = new sun.misc.BASE64Encoder().encode("minhaSenha".getBytes());
props.setProperty("http.proxyUserName",userid);
props.setProperty("http.proxyPassword",password);

Talvez ajude :slight_smile:

Amigos, Eu realmente não sei o que acontece.
Fiz o seguinte teste

        [color=darkblue]Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(  "proxy.com.br));
        URL url = new URL("www.uol.com.br");
        HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy);
        uc.connect();

        StringBuffer page = new StringBuffer("");

        BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
        while ((line = in.readLine()) != null)
        {
            page.append(line + "\n");
        }
        System.out.println(page);[/color]

Consegui me conectar normalmente e baixar o conteudo da pagina.

Mas se tento acessar o web service me da o erro [color=red]407 proxy authentication required [/color]

Estou chamando o web Service assim.

        [color=darkblue]ServiceFactory factory = ServiceFactory.newInstance(); 
        // define qnames 
        String targetNamespace = "http://tempuri.org/"; 
        QName serviceName = new QName(targetNamespace, "Service1"); 
        QName portName = new QName(targetNamespace, "Service1Soap"); 
        QName operationName = new QName("Service1", "HelloWorld"); 
        URL wsdlLocation = new URL ("http://192.168.0.1/WSTeste/Service1.asmx?wsdl"); 
        // create service 
        Service service = (Service) factory.createService(wsdlLocation, serviceName); 
        // create call 
        Call call = (Call) service.createCall(portName, operationName); 

        // invoke the remote web service 
        String result = (String) call.invoke(new Object[] {"teste teste teste teste"}); 

        System.out.println(result); [/color]

(Ta tudo ok com o Web Service pois ele funciona se eu substituir
http://192.168.0.1/WSTeste/Service1.asmx?wsdl

por
http://localhost/WSTeste/Service1.asmx?wsdl

Falta alguma coisa pra fazer a bendita autenticação? Será que estou chamando da maneira errada? Estou perdido!!!

Talvez o webservice que você está tentando acessar está requerendo um tipo específico de autenticação. Acho melhor dar uma analisada nas configurações do webservice e ver qual autenticação está sendo requerida.

thundercas nao tem nenhuma autenticação em especial
Eu criei esse web service aqui na minha maquina só pra teste mesmo.
Qualquer web service que eu tente consumir me da o erro de autenticação do proxy

Não tinha entendido que você tinha criado o Webservice local e estava querendo acessar via proxy público, neste caso você não teria que utilizar o seu IP externo e não o IP local (192.168.x.x) ?
Você fez assim o teste?

jamirdeajr tanto faz o IP que eu tente acessar de qualquer forma ele pede a autenticação seja um web service interno ou externo “por exemplo dos correios” ele só não pede a autenticação se eu coloca-lo como localhost http://localhost/WSTeste/Service1.asmx?wsdl
Se eu substituir o localhost pelo IP da minha maquina ele pede a autenticação de proxy
já estou desanimado e quase desistindo

Ah Se eu jogar esse web service no meu browser http://192.168.0.1/WSTeste/Service1.asmx?wsdl
ele acessa normalmente

Nos seus testes você está usando JAX-RPC?
Se sim dê uma olhada aqui:
http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.nd.doc/info/ae/ae/twbs_configwbsclient2webproxy.html

não consegui
Ele da a Exception pedindo a autenticação de proxy quando chega nessa linha

[color=darkblue]String result = (String) call.invoke(new Object[] {“teste teste teste teste”});[/color]

No exemplo do link ele faz assim, como você deve ter visto, numa ordem um pouco diferente da tua:

Properties prop = new Properties(); InitialContext ctx = new InitialContext(prop); Service service = (Service)ctx.lookup("java:comp/env/service/StockQuoteService"); QName portQname = new QName("http://httpchannel.test.wsfvt.ws.ibm.com", "StockQuoteHttp"); StockQuote sq = (StockQuote)service.getPort(portQname, StockQuote.class); ((javax.xml.rpc.Stub) sq)._setProperty(Constants.HTTP_PROXYHOST_PROPERTY, "proxyHost1.ibm.com"); ((javax.xml.rpc.Stub) sq)._setProperty(Constants.HTTP_PROXYPORT_PROPERTY, "80");
Posta o código ai pra gente ver, se possível com as tags ‘code’ pra ficar legível. No exemplo deles era ‘StockQuote’ a classe de retorno (eu acho), não sei qual o seu mas é nele que tem que setar o usuário e senha do proxy pois ele precisa ser enviado direto na requisição e não na conexão (pelo que entendi… falam em senha setada no ‘stub’)

Galera muito obrigado pela ajuda de todos
Depois de quase uma semana tentando finalmente desisti de fazer essa coisa funciona.
Resolvi usar uma conexao com o Banco de dados para recuperar e mandar as informações que precisava
Acredito que seja um problema da rede da minha empresa mesmo e depois de levar essa canseira que levei acabei optando pela solução do banco.
Mais uma vez muito obrigado a todos que tentaram me ajudar

Tive o mesmo problema, tente fazer o que eu fiz.
Abra as configurações do projeto e retire as opçoes de proxy da VM.