最近项目中用到SOAP,要求客户端POST SOAP数据过去,整理一下自己写的东西。
POST XML一般有两种方法,一种是指定参数名,将该参数来进行XML数据的传输,这是最常用的一种方式。
这次我想说明的另外一种,直接将XML数据以流的方式写入请求。
Servlet POST方法中来接受传送过来的XML流:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
System.out.println("----------------------");
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line).append("\r\n");
}
System.out.println(sb.toString());
System.out.println("----------------------");
out.print(sb.toString());
out.flush();
out.close();
}
Client端POST XML过去:
package com.javaeye.wangking717.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
public class HttpConnectionUtil {
private final static Log logger = LogFactory.getLog(HttpConnectionUtil.class);
public static String postSOAP(String url, String soapContent) {
HttpClient httpclient = null;
HttpPost httpPost = null;
BufferedReader reader = null;
int i = 0;
while (i < 4) {
try {
httpclient = new DefaultHttpClient();
httpPost = new HttpPost(url);
StringEntity myEntity = new StringEntity(soapContent, "UTF-8");
httpPost.addHeader("Content-Type", "text/xml; charset=UTF-8");
httpPost.setEntity(myEntity);
HttpResponse response = httpclient.execute(httpPost);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
reader = new BufferedReader(new InputStreamReader(resEntity
.getContent(), "UTF-8"));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\r\n");
}
return sb.toString();
}
} catch (Exception e) {
i++;
if (i == 4) {
logger.error("not connect:" + url + "\n" + e.getMessage());
}
} finally {
if (httpPost != null) {
httpPost.abort();
}
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (httpclient != null) {
httpclient.getConnectionManager().shutdown();
}
}
}
return "none";
}
public static void main(String[] args) {
String url = "http://localhost:8080/opgtest/servlet/MyTest";
String soap = "<xml>\r\n"
+ "<body>\r\n"
+ "传递过来的内容\r\n"
+ "</body>\r\n"
+ "</xml>";
System.out.println(postSOAP(url, soap));
}
}
OK,大功告成,很简单吧。
分享到:
相关推荐
本示例探讨的是如何使用HTTPClient库在客户端发送XML报文到服务器端,且报文通过POST方法传递,并可能涉及加密处理,确保数据的安全性。 首先,HTTPClient是Apache提供的一款强大的Java HTTP客户端API,它允许...
Java中的HttpClient是一个强大的HTTP客户端库,常用于与服务器进行数据交互。在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、...
在这个场景中,我们关注的是如何使用HttpClient来发送POST请求并传输JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于API接口的数据传递。 首先,我们需要引入Apache HttpClient...
与GET请求不同,POST请求的数据通常包含在请求正文中,这使得它适合传输大体积或敏感数据,如XML文档。 要实现HTTP POST发送XML数据,我们需要一个客户端库来构建和发送HTTP请求。在这个场景下,`commons-...
本篇文章将详细讲解如何使用HTTPClient库以POST方式发送JSON格式的数据,并介绍相关依赖包。 首先,为了使用HTTPClient库,我们需要导入Apache HttpClient相关的JAR包。在提供的文件列表中,"HttpClientJar"很可能...
在XML、form(表单数据)和JSON提交方面,HttpClient提供了一种灵活的方式将这些数据类型发送到服务器。 首先,我们来看`HttpClientUtil.java`,这是一个常见的工具类,通常包含一系列静态方法,用于简化HttpClient...
### 使用HttpClient发送POST请求,并获取响应内容 #### 一、简介 在现代软件开发中,尤其是在Web应用领域,客户端与服务器之间的通信是非常重要的环节。Java作为一种广泛应用的编程语言,提供了多种方式来实现这一...
在给定的代码片段中,主要展示了如何使用Java中的Apache HttpClient库发送一个包含XML数据的POST请求,并接收响应。下面是对关键部分的详细分析: 1. **导入必要的库**:代码首先导入了处理网络请求、输入输出流...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
- **API调用**:对于RESTful API,HttpClient 是一个理想的客户端工具,可以方便地发送JSON或XML数据。 - **文件上传下载**:通过POST或PUT请求,HttpClient 可以实现文件的上传,通过GET请求实现文件的下载。 - ...
`Httpclient` 是一个强大的工具,可以实现跨项目间的数据通信。本文将深入探讨如何使用 `Httpclient` 进行HTTP请求,实现不同项目之间的数据交换。 `Httpclient` 是Apache HttpClient库,它为Java开发者提供了全面...
在描述中提到的“httpclient4”,指的是HttpClient 4.x系列,这是一个稳定且广泛使用的版本。 在HttpClient 4.4.1.jar中,包含了HttpClient的主要功能实现,如HTTP方法(GET, POST等)、连接管理、重定向处理、身份...
HttpClient还支持其他高级功能,如重试策略、Cookie管理、多部分表单数据上传等。在实际项目中,我们通常会封装一个HttpClientUtil工具类,以简化请求的创建和执行过程。 例如,一个简单的HttpClientUtil工具类可能...
4. 所需jar包:使用HttpClient、HttpPost和HttpGet需要引入以下核心jar包: - `httpclient.jar`:包含HttpClient的主要实现,提供了基本的HTTP通信功能。 - `httpcore.jar`:HttpClient的核心组件,提供了HTTP协议...
最新帮助文档通常会涵盖HttpClient 4的主要功能、用法、配置、异常处理以及最佳实践。以下是对HttpClient 4的一些关键知识点的详细解释: 1. **基本概念**: - HttpClient:HttpClient是客户端HTTP服务端点的抽象...
这里我们详细探讨一下如何使用`HttpClient`发送POST请求,以及这个过程中的关键知识点。 首先,我们创建一个`CloseableHttpClient`对象,这相当于在编程环境中模拟了一个浏览器。`HttpClients.createDefault()`方法...
总结,HttpClient是Java中强大的HTTP客户端工具,通过它我们可以方便地实现各种HTTP操作,包括简单的GET、POST请求,以及复杂的文件上传和下载。结合服务端的处理,可以构建出完整的网络通信解决方案。在实际使用中...
以下是一个使用HttpClient发送POST请求的Java代码示例: ```java import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import...
HttpClient4库提供了丰富的API,可以定制化地构造HTTP请求,包括设置方法(GET、POST等)、添加请求头、携带Cookie、处理重定向以及上传下载数据等。在模拟登录过程中,通常需要设置POST请求,填充登录表单数据,如...