Estou tentando fazer com que eu saiba o valor do frete mas não funciona com a URL que estou colocando. Se eu colocar o arquivo XML no diretório da aplicação, eu consigo pegar o valor do frete.
$.ajax({
type: "GET",
url: url, // endereço dos correios com os parâmetros
dataType: "xml" //retorna um arquivo XML
}, function (xml) {
var x = xml,
xmlDoc = $.parseXML(x), //analisa o arquivo XML
$xml = $(xmlDoc), //referencia do arquivo
$price = $xml.find("Valor");//obtém da chave Valor o preço do frete
alert($price.text());//alerta o valor
});
}[/code]
dataType: "jsonp" //retorna um arquivo XML
ai o navegador retorna um erro falando que a expressão não foi terminada, existe alguma forma de analisar o que foi retornado?
Grato.
A solução pra vc seria fazer uma requisição pro seu sistema Java, que então faria uma requisição HTTP pro site dos correios e retornaria a resposta dele
Hunnmm
pode ser tbm, vou dar uma lida na API do Java pra analisar arquivos XML…
provavelmente deve ter algum construtor que eu coloco a URL não tem? se existir, o cliente vai aceitar a minha requisição e vai me devolver um arquivo .xml de presente?
Grato.
[quote=pqnoje]Hunnmm
pode ser tbm, vou dar uma lida na API do Java pra analisar arquivos XML…
provavelmente deve ter algum construtor que eu coloco a URL não tem? se existir, o cliente vai aceitar a minha requisição e vai me devolver um arquivo .xml de presente?
Grato.[/quote]
Não precisa analisar XML no Java, o que retornar da requisição HTTP vc retorna na sua action Java, e aí ao invés do seu código Javascript apontar pro site dos correios apontaria pra sua action. O Java seria tipo um proxy para permitir requisição cross-domain
eu troquei pra post e agora ta retornando o endereço exadecimal de um objeto, só não sei o que fazer com esse troço agora.
enquando a requisição via Action eu vou tentar, eu uso Struts2, vou dar uma olhada na API pra ver se tem alguma coisa interessante e já te falo…
Sem lib usa-se HttpURLConnection que se instancia a partir de um objeto da classe URL
To saindo agora, se quando voltar vc não tiver conseguido eu posto um exemplo
[code]public String execute() {
address = "http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?"
+ “nCdEmpresa=”
+ “&sDsSenha=”
+ “&sCepOrigem=02724070”
+ “&sCepDestino=71939360”
+ “&nVlPeso=1”
+ “&nCdFormato=1”
+ “&nVlComprimento=20”
+ “&nVlAltura=5”
+ “&nVlLargura=15”
+ “&sCdMaoPropria=s”
+ “&nVlValorDeclarado=200”
+ “&sCdAvisoRecebimento=s”
+ “&nCdServico=41106”
+ “&nVlDiametro=0”
+ “&StrRetorno=xml”;
HttpURLConnection con = null;
PrintStream out = null;
try {
URL url = new java.net.URL(address); //aqui se define o endereço que devolverá o arquivo
con = (java.net.HttpURLConnection) url.openConnection();//prepara conexão com o cliente
con.setUseCaches(false);
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestProperty(“Content-Type”, “text/xml”);//define o tipo de retorno, pode ser outro tipo também
out = new PrintStream(con.getOutputStream());//obtém o que o cliente devolveu
BufferedReader buffReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder sb = new StringBuilder();
String xml;
while ((xml = buffReader.readLine()) != null) {
sb.append(xml);//recebe o arquivo xml do cliente
}
System.out.println(sb.toString()); //imprime o xml retornado
out.close();
con.disconnect(); // sempre feche as conexões!
} catch (Exception e) {
e.printStackTrace();
out.close();
con.disconnect(); // sempre feche as conexões!
}
return Action.SUCCESS; // para quem usa Struts 2
}[/code]
Neste caso os resultados poderão ser visualizados no formato XML, numa janela popup ou numa página disponível no ambiente do requisitante. Neste último caso o retorno será enviado via post.
tenta trocar GET por POST.[/quote]
No caso de requisitar XML sem ser de endereço loca, não ś possível, só com Json mesmo. Eu também achava que dava, pois só uso Json em todas as minhas Actions.