使用httpclient发送SOAP请求
package com.cordyschina.apptoolkit.util.http;import java.io.ByteArrayInputStream;import java.io.InputStream;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.methods.InputStreamRequestEntity;import org.apache.commons.httpclient.methods.PostMethod;import org.apache.commons.httpclient.methods.RequestEntity;public class Saml_Test {private static final String soapRequestData ="<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">"+"<SOAP:Header>"+"<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">"+"<wsse:UsernameToken xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">"+"<wsse:Username>administrator</wsse:Username>"+"<wsse:Password>cordys</wsse:Password>"+"</wsse:UsernameToken>"+"</wsse:Security>"+"</SOAP:Header>"+"<SOAP:Body>"+"<samlp:Request xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol" MajorVersion="1" MinorVersion="1">"+"<samlp:AuthenticationQuery>"+"<saml:Subject xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">"+"<saml:NameIdentifier Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified">administrator</saml:NameIdentifier>"+"</saml:Subject>"+"</samlp:AuthenticationQuery>"+"</samlp:Request>"+"</SOAP:Body>"+"</SOAP:Envelope>";public static void main(String[] args) {try {System.out.println(soapRequestData);PostMethod postmethod = new PostMethod("http://10.200.1.128/cordys/com.eibus.web.soap.Gateway.wcp");byte[] b = soapRequestData.getBytes("UTF-8");InputStream is = new ByteArrayInputStream(b, 0, b.length);RequestEntity re = new InputStreamRequestEntity(is, b.length,"application/xop+xml; charset=UTF-8; type="text/xml"");postmethod.setRequestEntity(re);HttpClient httpClient = new HttpClient();int statusCode = httpClient.executeMethod(postmethod);System.out.println("statuscode=" + statusCode);String soapResponseData = postmethod.getResponseBodyAsString();System.out.println(soapResponseData);} catch (Exception ex) {ex.printStackTrace();}}}
?