HttpUrlConnection 发送 SOAP 请求,SAX 解析 SOAP 响应
时间: 2024-06-09 17:05:44 浏览: 79
HttpURLConnection 是 Java 中用于发送 HTTP 请求的类,其中包括发送 SOAP 请求。在使用 HttpURLConnection 发送 SOAP 请求时,需要将 SOAP 消息作为 HTTP 请求体发送给服务器。以下是一个简单的示例:
```java
URL url = new URL("http://example.com/soap");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "text/xml;charset=UTF-8");
String soapMessage = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ser=\"http://example.com/soap/service\">\n" +
" <soapenv:Header/>\n" +
" <soapenv:Body>\n" +
" <ser:MySoapService>\n" +
" <ser:inputParam>hello world</ser:inputParam>\n" +
" </ser:MySoapService>\n" +
" </soapenv:Body>\n" +
"</soapenv:Envelope>";
OutputStream os = conn.getOutputStream();
os.write(soapMessage.getBytes());
os.flush();
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
}
InputStream is = conn.getInputStream();
// 使用 SAX 解析 SOAP 响应
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
MySoapResponseHandler handler = new MySoapResponseHandler();
saxParser.parse(is, handler);
String output = handler.getOutput();
System.out.println(output);
conn.disconnect();
```
在上面的示例中,我们首先创建一个 HttpURLConnection 对象,并设置请求方法为 POST,请求头中包括 Content-Type 为 text/xml;charset=UTF-8。然后,我们将 SOAP 消息作为请求体写入输出流中,并发送请求。如果响应码为 HTTP_OK,则表示请求成功,我们可以获取输入流,使用 SAXParser 对 SOAP 响应进行解析。解析过程中,我们需要自定义一个 SAX 解析处理器 MySoapResponseHandler,用于处理 SOAP 响应中的内容。最后,我们可以从处理器中获取解析结果,输出到控制台。最后别忘了关闭连接。
阅读全文