Boa tarde pessoal,
alguem poderia me dar uma luz, de como enviar um arquivo XML por meio de um webService para uma URL que exige autenticação de username e password ?
Eu consigo enviar o arquivo normalmente para uma outra URL que nao exige autenticação, com o seguinte trecho de codigo:
Primeiramente você tem que ver qual o tipo de autenticação que o WebService esta usando.
Autenticação de usuario e senha. Não precisa autenticar o proxy
Eu consegui fazer ele acessar a pagina, mas não consigo fazer ele enviar um XML para essa URL e obter a resposta. O codigo que eu acessei a pagina foi esse:
URL url = new URL(host);
URLConnection uc = url.openConnection();
String userpass = "username" + ":" + "senha";
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
uc.setRequestProperty("Authorization", basicAuth);
InputStream in = uc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String str = "";
String strT = "";
while ((strT = br.readLine()) != null) {
str += strT;
}
System.out.println(srt);
Alguma ajuda?
Eu digo a autenticação do próprio WS, ela pode ser Single Sign On, Token ou qualquer outra…
É autenticação SSO, onde é preciso se logar apenas a primeira vez e depois permite eu acessar as outras paginas.
?
Para enviar o XML do request que eu monto sem autenticação eu consegui, da seguinte forma:
public EnviaXMLRequisicaoWS(XmlRequest xmlRequest, String url) throws MalformedURLException, IOException {
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
BufferedReader br = null;
method.addParameter("xml", xmlRequest.toString());
String resp = "";
try {
client.executeMethod(method);
br = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
String readLine = "";
while ((readLine = br.readLine()) != null) {
resp += readLine;
}
System.out.println(resp);
} catch (IOException ex) {
Logger.getLogger(EnviaXMLRequisicaoWS.class.getName()).log(Level.SEVERE, null, ex);
} finally {
method.releaseConnection();
}
}
}
Para autenticar a URL que eu estou querendo acessar eu fiz da seguinte forma e deu certo:
public static void main(String[] args) throws Exception {
try {
URL url = new URL("url");
URLConnection uc = url.openConnection();
String userpass = "usernamen" + ":" + "password";
String basicAuth = "Basic " + new String(new Base64().encode(userpass.getBytes()));
uc.setRequestProperty("Authorization", basicAuth);
InputStream in = uc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String str = "";
String strT = "";
while ((strT = br.readLine()) != null) {
str += strT;
}
System.out.println(str);
}
}
Porém quando eu tento enviar um XML para essa URL com autenticação eu nao consigo.
Alguém tem uma dica de como realizar isso simultaneamente? autenticar e enviar XML.
Vlw
Tem certeza que esse WS usa SSO com autenticação Basic ? Qual a mensagem de erro que você obtém ao fazer este request ?
O erro que está dando é:
[color=red]0 [main] INFO auth.AuthChallengeProcessor - basic authentication scheme selected
5 [main] INFO httpclient.HttpMethodDirector - No credentials available for BASIC ‘Secret’@www
[/color]