olá!
Estou tentando conectar em um webservice que utiliza autenticação preemptiva, com usuário e senha.
Cheguei até esse código abaixo mas sempre retorna o erro informando que a conexão precisa de autenticação.
Alguma dica de como resolver esse problema?
StringBuilder soapMessage = new StringBuilder();
soapMessage.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>")
.append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.agrotis.com.br/ReceitaAgrowin/xsd/\">")
.append("<soapenv:Header/>")
.append("<soapenv:Body>")
.append("<xsd:atualizarClienteEnvio/>")
.append("</soapenv:Body>")
.append("</soapenv:Envelope>");
org.apache.axis.soap.MessageFactoryImpl impl = new org.apache.axis.soap.MessageFactoryImpl();
MimeHeaders header = new MimeHeaders();
header.addHeader("Content-Type", "application/soap+xml");
String authorization = Base64Coder.encodeString("usuario:senha");
header.addHeader("Authorization", "Basic " + authorization);
SOAPMessage message = impl.createMessage(header,
new ByteArrayInputStream(soapMessage.toString().getBytes()));
SOAPConnectionImpl conn = new SOAPConnectionImpl();
URL url = new URL("http://servidor:porta/WS/Utilitarios");
SOAPMessage response = conn.call(message, url);
conn.close();
StringWriter sw = new StringWriter();
Source source = new DOMSource(
response.getSOAPPart().getEnvelope().getBody().getFirstChild().getFirstChild());
TransformerFactory.newInstance().newTransformer().transform(
source, new StreamResult(sw));
System.out.println("========================================================");
System.out.println(response.getSOAPBody().getFault().getFaultString());
System.out.println(sw.toString());
System.out.println("========================================================");
Retorna o erro:
======================================================== (407)Proxy Authentication Required <?xml version="1.0" encoding="UTF-8"?><faultcode/> ========================================================
Obs.: esto usando o framework Axis1.4