如何在Java中进行soap请求和响应?

如何在Java中进行soap请求和响应?,java,web-services,soap,Java,Web Services,Soap,如何执行soap Web服务以及如何打印数据 目前我正在使用以下代码 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 SimpleHTTPReques

如何执行soap Web服务以及如何打印数据

目前我正在使用以下代码

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(); }
  }
}
package com.appulento.pack;
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.io.OutputStreamWriter;
导入java.net.HttpURLConnection;
导入java.net.URL;
公共类SimpleHTTPRequest
{
公共静态void main(字符串[]args)引发异常{
最终字符串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\u-DETAILS”,
信封1=“”+
"" +
""+
""+
""+
“D”+
"00208"+
""+
""+
"" ;
HttpURLConnection=null;
试一试{
最终URL服务器地址=新URL(“http://********:8000/sap/bc/srt/wsdl/”+
“srvc_14DAE9C8D79F1EE196F1FC6C6518A345/wsdl11/allinone/ws_policy/”+
“文档?sap客户端=800和sap用户=************和sap密码=****”;
connection=(HttpURLConnection)serverAddress.openConnection();
setRequestProperty(“SOAPAction”,SOAPAction);
connection.setRequestMethod(“POST”);
connection.setDoOutput(真);
final OutputStreamWriter writer=新的OutputStreamWriter(connection.getOutputStream());
作者:追加(信封1);
writer.close();
最终缓冲读卡器rd=
新的BufferedReader(新的InputStreamReader(connection.getInputStream());
弦线;
而((line=rd.readLine())!=null)System.out.println(line);
}最后{connection.disconnect();}
}
}

我希望将xml作为输入请求发送,并且也希望以xml显示。

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

您的代码看起来棒极了。现在只需使用
POST
而不是
GET
,并将您的请求写入输出。感谢您的回复就我所知,我如何处理响应,您已经在处理它了--写入System.out.HERE我只在控制台中获取WSDL请检查一次我在代码中的错误我的代码中是否有任何错误请查看一次并让我知道,以便我可以转到其他方式