如何在Java中创建soap请求和响应?

问题描述:

如何执行soap web服务以及如何打印数据?如何在Java中创建soap请求和响应?

目前我使用下面的代码

package com.appulento.pack; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.net.HttpURLConnection; 
import java.net.URL; 

public class SimpleHTTPRequest 
{ 
    public static void main(String[] args) throws Exception { 
    final String url = 
     "http://**********:8000/sap/bc/srt/rfc/sap/zmaterials_details/" + 
      "800/zmaterials_details/zmaterials_details_bind", 
     soapAction ="urn:sap-com:document:sap:soap:functions:mc-style/ZMATERIALS_DETAILS", 
     envelope1="<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
     "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"" + 
      " xmlns:urn=\"urn:sap-com:document:sap:soap:functions:mc-style\">" + 
     "<soapenv:Header>"+ 
     "<soapenv:Body>"+ 
     "<urn:ZMATERIALS_DETAILS>"+ 
     "<Language>D</Language>"+ 
     "<MaterialGroup>00208</MaterialGroup>"+ 
     "</urn:ZMATERIALS_DETAILS>"+ 
     "</soap:Body>"+ 
     "</soap:Envelope>" ; 
    HttpURLConnection connection = null; 
    try { 
     final URL serverAddress = new URL("http://*********:8000/sap/bc/srt/wsdl/"+ 
      "srvc_14DAE9C8D79F1EE196F1FC6C6518A345/wsdl11/allinone/ws_policy/" + 
      "document?sap-client=800&sap-user=************&sap-password=****"); 
     connection = (HttpURLConnection)serverAddress.openConnection(); 
     connection.setRequestProperty("SOAPAction", soapAction); 
     connection.setRequestMethod("POST"); 
     connection.setDoOutput(true); 
     final OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); 
     writer.append(envelope1); 
     writer.close(); 
     final BufferedReader rd = 
      new BufferedReader(new InputStreamReader(connection.getInputStream())); 
     String line; 
     while ((line = rd.readLine()) != null) System.out.println(line); 
    } finally { connection.disconnect(); } 
    } 
} 

我想发送XML作为输入请求,我想在XML中显示了。

+0

你的代码看起来很棒。现在只需使用'POST'而不是'GET',然后将您的请求写入输出。 – 2012-04-25 10:47:10

+0

感谢您的回复我如何处理回复 – 2012-04-25 11:08:23

+0

据我所知,您已经在处理它 - 写入System.out。 – 2012-04-25 11:09:38

Iit可以像使用httpConnection和解析响应一样发送HTTP请求。 但它已被其他人使用,使用wsimport工具与-keep选项。它将为您生成用于使用SOAP发送请求的Java工件。

+0

“我的代码”中是否有任何错误,请参阅一次,让我知道,以便我可以转移到其他方式 – 2012-04-25 12:38:26