Estou tentando executar uma validação utilizando a conexão com um webservice, ja fiz este com a porta 80 e o mesmo funciona corretamente, mas agora me deparei com um webservice HTTPs e o mesmo nunca funciona, pois quando o java aguarda a resposta do servidor, o mesmo não responde e cai por timeout. a seguir o codigo para que possam entender a classe:
public ComandoWebService enviaWebService2(ComandoWebService cmd, String var){
String resp = "";
try {
String[] variaveis = cmd.getVariaveis();
String[] valores = cmd.getValores().split(";;");
String xmldata = "" +
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"+
"<soap:Envelope "+ cmd.getEnvelope_protocolos() +">"+
"<soap:Body>"+
"<" + cmd.getMetodo_envio() + " xmlns=\"" + cmd.getWorkspace() + "\">";
for(int i =0; i< variaveis.length;i++)
xmldata += "<" + variaveis[i] + " "+ cmd.getMetodo_envio_protocolo()+ ">[" + valores[i] + "]</" + variaveis[i] + ">" ;
xmldata +=""+
"</" + cmd.getMetodo_envio() + ">"+
"</soap:Body>"+
"</soap:Envelope>";
Ura ura = new Ura();
//for(int i=0;i<valores.length;i++){
xmldata = ura.colocaVariaveis(var,xmldata);
//}
//Create socket
int port = Integer.parseInt(cmd.getPorta());
InetAddress addr = InetAddress.getByName(cmd.getHost());
Socket sock = new Socket(addr, port);
sock.setSoTimeout(10000);
//Send header
//path = "/WebService/URANovoFax.asmx";
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(),"UTF-8"));
// You can use "UTF8" for compatibility with the Microsoft virtual machine.
//Seta metodo Post
String post ="POST " + cmd.getPost_comando() + " HTTP/1.1\r\n";
wr.write(post);
//Seta Host
String host = "Host: " + cmd.getHost() + "\r\n";
wr.write(host);
//Seta Length
String length = "Content-Length: " + xmldata.length() + "\r\n";
wr.write(length);
//Seta tipo
String type = "Content-Type: text/xml; charset=\"utf-8\"\r\n";
wr.write(type);
//Seta Ação SOAP
/* Cancelado SOAPAction
String soapAction = "SOAPAction: \"" + cmd.getSoap_action() +"\"";
System.out.println(soapAction);
wr.write(soapAction);
/* */
wr.write("\r\n");
//Envia Xml
wr.write(xmldata);
//Envia Comandos
wr.flush();
System.out.println("Enviei XML:");
System.out.println(xmldata.replace(">", ">\n"));
//Response
BufferedReader rd = new BufferedReader(new InputStreamReader(sock.getInputStream()));
String line;
cmd.setXml_envio(xmldata);
cmd.setXml_recebimento(resp);
while((rd.ready())){
line = rd.readLine();
resp+=line;
}
cmd.setValores(getResultado(resp,cmd.getRetornos(), xmldata));
resp = resp.replace(">",">\n");
resp = trataResp(resp);
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
//abre a conexao com o arquivo, buffer de 1 mega
String nomeArquivo = new String();
nomeArquivo = "C:\\" + THutil.geraRadicalSimples() + ".txt";
File arq = new File(nomeArquivo);
while(arq.exists()){
nomeArquivo = "C:\\" + THutil.geraRadicalSimples() + ".txt";
arq = new File(nomeArquivo);
}
THutil.escreveArquivo(nomeArquivo, resp);
InputSource input = new InputSource(nomeArquivo);
XMLHandler handler = new XMLHandler(cmd.getRetornos()[0], cmd);
parser.parse(input, handler);
cmd = handler.getComandoWebService();
cmd.setValores(handler.getResposta());
cmd.setXml_recebimento(resp);
//System.out.println(resp);
rd.close();
System.out.println("Recebi de Retorno:" + cmd.getValores());
THutil.apagaArquivo(nomeArquivo);
} catch (Exception e) {
e.printStackTrace();
}
return cmd;
}
Quando faço a verificação se o BufferReader esta pronto o mesmo retorna false;
:?
