java代码通过HttpClient发送WebService请求

besily 2011-03-03

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();   
        }   
    }   
}