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
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?
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á esteStringuserid=newsun.misc.BASE64Encoder().encode("DOMINIO\meuUsuario".getBytes());Stringpassword=newsun.misc.BASE64Encoder().encode("minhaSenha".getBytes());props.setProperty("http.proxyUserName",userid);props.setProperty("http.proxyPassword",password);
robertoMoraes
Talvez ajude
F
ferlindo7
Amigos, Eu realmente não sei o que acontece.
Fiz o seguinte teste
[color=darkblue]Proxyproxy=newProxy(Proxy.Type.HTTP,newInetSocketAddress("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]ServiceFactoryfactory=ServiceFactory.newInstance();// define qnames StringtargetNamespace="http://tempuri.org/";QNameserviceName=newQName(targetNamespace,"Service1");QNameportName=newQName(targetNamespace,"Service1Soap");QNameoperationName=newQName("Service1","HelloWorld");URLwsdlLocation=newURL("http://192.168.0.1/WSTeste/Service1.asmx?wsdl");// create service Serviceservice=(Service)factory.createService(wsdlLocation,serviceName);// create call Callcall=(Call)service.createCall(portName,operationName);// invoke the remote web service Stringresult=(String)call.invoke(newObject[]{"teste teste teste teste"});System.out.println(result);[/color]
Falta alguma coisa pra fazer a bendita autenticação? Será que estou chamando da maneira errada? Estou perdido!!!
thundercas
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.
F
ferlindo7
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
jamirdeajr
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?
F
ferlindo7
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
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]
jamirdeajr
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’)
F
ferlindo7
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
N
netodiegues
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.