0
私はsaxパーサーを使用するにはthisチュートリアルに従っています。私の入力がxmlファイルを使用している場合、以下の行が正常に動作しています。しかし、Webサービスからの応答として取得するXMLをどのように解析できますか? saxパーサへの入力としてsoapレスポンスを渡すには?サックスを使用してxml応答を解析する
new MySaxParser("catalog.xml");
私のコード
public class soapTest{
private static SOAPMessage createSoapRequest() throws Exception{
MessageFactory messageFactory = MessageFactory.newInstance();
SOAPMessage soapMessage = messageFactory.createMessage();
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope soapEnvelope = soapPart.getEnvelope();
soapEnvelope.addNamespaceDeclaration("action", "http://www.webserviceX.NET/");
SOAPBody soapBody = soapEnvelope.getBody();
SOAPElement soapElement = soapBody.addChildElement("GetQuote", "action");
SOAPElement element1 = soapElement.addChildElement("symbol", "action");
element1.addTextNode("ticket");
MimeHeaders headers = soapMessage.getMimeHeaders();
headers.addHeader("SOAPAction", "http://www.webserviceX.NET/GetQuote");
soapMessage.saveChanges();
System.out.println("----------SOAP Request------------");
soapMessage.writeTo(System.out);
return soapMessage;
}
private static void createSoapResponse(SOAPMessage soapResponse) throws Exception {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source sourceContent = soapResponse.getSOAPPart().getContent();
System.out.println("\n----------SOAP Response-----------");
StreamResult result = new StreamResult(System.out);
transformer.transform(sourceContent, result);
}
public static void main(String args[]){
try{
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();
SOAPConnection soapConnection = soapConnectionFactory.createConnection();
String url = "http://www.webservicex.net/stockquote.asmx?wsdl";
SOAPMessage soapRequest = createSoapRequest();
//hit soapRequest to the server to get response
SOAPMessage soapResponse = soapConnection.call(soapRequest, url);
// Not able to proceed from here. How to use sax parser here
soapConnection.close();
}catch (Exception e) {
e.printStackTrace();
}
}
解析し、XML応答から値を取得する方法。
おかげで、私の問題に探して。私は石鹸の応答をストリームすることができますが、私のコードはどこかにぶら下がっています。あなたは私の問題を知るために、以下の投稿を読むことができますhttp://stackoverflow.com/questions/42210300/stream-soap-response-and-parse-using-sax-parser – user4324324
私はコードをスケッチしたようですが、ストリームを省略醸造からの閉鎖、私はポストを修正する(例外をスローするのではなく、それを捕まえてストリームを閉じる、それが行われるべきである)。その後、あなたの 'ぶら下がり'はおそらく消え去るでしょう –
私は自分自身を欺いたことを発見したばかりで、さらに悪いことに、あなたもこれを見てください:http://stackoverflow.com/questions/484119/why-doesnt-more-java-code- use pipedinputstream-pipedoutputstream –