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();
}
}
}
分享到:
相关推荐
2. **配置HTTPClient**:接着,我们需要使用Apache的HTTPClient库来发送这个SOAP请求。首先,引入HTTPClient的相关依赖,确保项目中包含httpclient和httpcore的jar包。然后,创建HttpClient实例,设置相应的连接和...
1. **SOAP请求消息的构建**:在`accessService`方法中,通过`StringBuffer`来逐步构建SOAP请求消息,包括设置SOAP的命名空间、方法名以及参数等信息。 2. **HTTP请求的配置**:通过`PostMethod`对象来设置HTTP请求的...
- 发送SOAP请求:Servlet可以使用`java.net.URLConnection`或Apache的 HttpClient库来构造和发送HTTP POST请求,其中请求体包含SOAP消息。 - 处理SOAP响应:接收到响应后,Servlet可以使用XML解析器解析响应体,...
4. **设置SOAP请求体**: 使用`StringEntity`或`HttpEntityEnclosingRequestBase`来设置SOAP请求体。这通常涉及到将SOAP XML转换为字符串并添加到请求中: ```java String soapRequestBody = ...
调用Web Service时,我们可以通过HttpClient发送POST请求,携带SOAP消息体来完成调用。以下是一段简单的HttpClient调用Web Service的代码示例: ```java CloseableHttpClient httpClient = HttpClients.create...
3. **构建SOAP请求**: WCF服务通常使用SOAP协议,所以需要构建一个符合WSDL(Web Service Description Language)规范的SOAP请求XML。这包括SOAP Envelope、Header和Body。 4. **设置请求实体**: 对于HttpPost,...
在这个修改过的jar包中,可能已经包含了这样的功能,即在发送SOAP请求前,允许用户设置一个自定义的超时值,避免因为长时间等待服务器响应而影响应用的性能。 `Test.java`文件可能是包含示例代码的测试类,演示如何...
- 使用HTTP客户端库(如Apache HttpClient)发送SOAP请求。 - 接收HTTP响应,解析SOAP响应XML,提取业务数据。 - 可能还包括错误处理和日志记录。 了解这些基本概念后,开发者就能根据具体的业务需求,利用SOAP协议...
`PostSOAP_java.htm`可能是关于如何使用HttpClient发送SOAP(简单对象访问协议)消息的例子,这对于调用Web服务至关重要。 10. **SSL/TLS支持**: HttpClient支持HTTPS协议,可以配置SSLContext和TrustManager以...
- Java中可以通过`java.net.HttpURLConnection`或者第三方库如Apache HttpClient来发送SOAP请求。 - 构建SOAP消息的方式与VB.NET类似,但需要注意字符串转义的不同,例如在Java中XML的双引号需要用`\"`来表示。 -...
4. **处理响应**:发送请求后,HttpClient会返回一个`HttpResponse`对象,从中可以获取响应状态码、响应头和响应体。对于WCF服务,响应体通常是XML或JSON格式的数据,需要解析成Java对象。 5. **数据序列化和反序列...
使用HttpClient,我们可以构建一个WebService客户端,向Web服务发送SOAP请求并接收响应。 下面是一段简单的示例代码,展示了如何使用HttpClient发送一个POST请求,模拟调用一个SOAP WebService: ```java import ...
此外,如果Web服务是基于SOAP协议的,请求和响应的格式会更加复杂,需要包含XML数据。 至于标签中的“工具”,在实际开发中,Java有许多库如Apache HttpClient、OkHttp等,可以简化HTTP请求的处理,提供更高级的...
在实际应用中,解析SOAP消息通常结合网络请求,例如使用Apache HttpClient发送SOAP请求并接收响应,然后使用DOM4J解析响应内容。了解DOM4J库的其他功能,如XPath查询、命名空间处理等,可以帮助更高效地处理复杂SOAP...
在本文中,我们将深入探讨一个名为"soap-tools"的工具,它是一个简单的HTTP客户端,专为在HTTP正文中发送SOAP请求而设计。这个工具被称为"soapi-rawclient",它是用Java编程语言编写的,因此对Java开发者来说非常...
4. **发送请求**:通过HttpClient的HttpMethod接口(如HttpGet或HttpPost),将SOAP请求发送到服务器。 5. **接收响应**:处理服务器返回的HTTP响应,并从中提取SOAP响应。 6. **解析SOAP响应**:使用KSOAP2的解析器...
4. **使用HTTP发送SOAP请求**: 在Java中,可以使用`HttpURLConnection`或Apache HttpClient库来发送HTTP POST请求,包含SOAP请求XML。请求的URL应指向服务的SOAP端点(Endpoint),通常是一个HTTP URL。 5. **解析...
- 发送HTTP请求:HttpClient库提供了发送GET、POST等请求的方法,并可以处理响应。 - 调用Web服务:ksoap2库帮助开发者与SOAP Web服务进行通信,通过构建和解析SOAP消息来调用服务方法。 - 日志记录: Commons ...
总之,使用Titanium的SOAPClient访问SOAP Web服务涉及到构建SOAP请求消息、设置请求头、发送请求以及解析响应。理解SOAP协议的基础知识和Titanium的HTTPClient机制是实现这一目标的关键。在实践中,不断调试和优化,...
如果是SOAP请求,通常需要将SOAP XML消息作为请求体: ```java StringEntity entity = new StringEntity(mySoapMessage); httpPost.setEntity(entity); ``` 5. **执行请求并获取响应**:使用`execute()`方法...