`
jaymsimusic
  • 浏览: 94361 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

HttpClient 4 Post XML到一个服务器(转)

    博客分类:
  • java
阅读更多
对于POST方式,最先想到的就是表单提交了,POST XML自然想到的就是定义一个变量名,比如叫xmldata,然后将这个参数的值POST出去,在服务端接收的时候,自然也是通过 requset.getParameter("xmldata")方式来接收。

现在我在这里要做的不是通过上面的方式,而是不指定参数名来Post,实际上就是将一个流写入请求。

下面是具体的实现方式:

1、参数名方式POST XML数据

import org.apache.http.*;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.client.*;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.*;

/**
 * 通过指定参数名的方式POST XML
 * 
 */
public class TestPost {
	public static void main(String[] args) throws IOException {
		HttpClient httpclient = new DefaultHttpClient();
		HttpPost httppost = new HttpPost(
				"http://localhost:8080/waitsrv/GenXmlServlet");
		List<NameValuePair> formparams = new ArrayList<NameValuePair>();
		formparams.add(new BasicNameValuePair("xmldate", "<html>你好啊啊</html>"));
		formparams.add(new BasicNameValuePair("info", "xxxxxxxxx"));
		UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams,
				"GBK");
		// entity.setContentType("text/xml; charset=GBK");
		httppost.setEntity(entity);
		HttpResponse response = httpclient.execute(httppost);
		HttpEntity resEntity = response.getEntity();
		InputStreamReader reader = new InputStreamReader(
				resEntity.getContent(), "ISO-8859-1");
		char[] buff = new char[1024];
		int length = 0;
		while ((length = reader.read(buff)) != -1) {
			System.out.println(new String(buff, 0, length));
			httpclient.getConnectionManager().shutdown();
		}
	}
}


2、不指定参数名的方式来POST数据

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.entity.*;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

/**
 * 不指定参数名的方式来POST数据
 * 
 */
public class TestPostXml {
	public static void main(String[] args) throws IOException {
		HttpClient httpclient = new DefaultHttpClient();
		HttpPost httppost = new HttpPost(
				"http://localhost:8080/waitsrv/GenXmlServlet");
		StringEntity myEntity = new StringEntity("<html>你好啊啊</html>", "GBK");
		httppost.addHeader("Content-Type", "text/xml");
		httppost.setEntity(myEntity);
		HttpResponse response = httpclient.execute(httppost);
		HttpEntity resEntity = response.getEntity();
		InputStreamReader reader = new InputStreamReader(
				resEntity.getContent(), "ISO-8859-1");
		char[] buff = new char[1024];
		int length = 0;
		while ((length = reader.read(buff)) != -1) {
			System.out.println(new String(buff, 0, length));
		}
		httpclient.getConnectionManager().shutdown();
	}
}


服务端接收方式:
package com;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

/**
 * 接收XLM请求
 * 
 */
public class GenXmlServlet extends HttpServlet {
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// String xml = req.getParameter("xmldata");
		resp.setContentType("text/xml");
		resp.setCharacterEncoding("GBK");
		PrintWriter out = resp.getWriter();
		// out.println(xml);
		// System.out.println(xml);
		System.out.println("----------------------");
		InputStreamReader reader = new InputStreamReader(req.getInputStream(),
				"GBK");
		char[] buff = new char[1024];
		int length = 0;
		while ((length = reader.read(buff)) != -1) {
			String x = new String(buff, 0, length);
			System.out.println(x);
			out.print(x);
		}
	}

	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html");
		PrintWriter out = resp.getWriter();
		out.println("<html>");
		out.println("<head>");
		out.println("<title>Hello World!</title>");
		out.println("</head>");
		out.println("<body>");
		out.println("<h1>Hello World!!</h1>");
		out.println("</body>");
		out.println("</html>");
	}
}


web.xml
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
version="2.5"> 
<servlet> 
<servlet-name>GenXmlServlet</servlet-name> 
<servlet-class>com.GenXmlServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>GenXmlServlet</servlet-name> 
<url-pattern>/GenXmlServlet</url-pattern> 
</servlet-mapping> 
</web-app> 



分享到:
评论
1 楼 gab26 2011-03-01  
太感谢啦,正需要第二种方法而不知道怎么写呢!

相关推荐

    httpclient 客户端发送xml报文到服务器端采用post方式(加密)传递

    本示例探讨的是如何使用HTTPClient库在客户端发送XML报文到服务器端,且报文通过POST方法传递,并可能涉及加密处理,确保数据的安全性。 首先,HTTPClient是Apache提供的一款强大的Java HTTP客户端API,它允许...

    java 中HttpClient传输xml字符串实例详解

    至此,我们已经成功地使用Java的HttpClient库将一个对象转换为XML字符串,并以二进制流的方式发送到了服务器。这个过程中涉及的关键技术包括对象到XML的转换(JAXB)、流操作(ByteArrayOutputStream和...

    使用HttpClient发送POST请求,并获取响应内容(附详细步骤).txt

    - 使用`HttpClients.createDefault()`方法创建一个默认的HttpClient实例。 2. **创建HttpPost对象**: - 创建一个HttpPost对象,并设置请求的URL。 - 示例中使用的URL为`"http://example.com/api/v1/post"`,请...

    httpClient的xml,form,json提交

    在XML、form(表单数据)和JSON提交方面,HttpClient提供了一种灵活的方式将这些数据类型发送到服务器。 首先,我们来看`HttpClientUtil.java`,这是一个常见的工具类,通常包含一系列静态方法,用于简化HttpClient...

    HttpClient发送post请求传输json数据

    首先,创建一个HttpClient对象,然后创建HttpPost实例,设置请求URL。例如: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost httpPost = new HttpPost("http://example.com/api"...

    http post 发送xml数据

    接着,我们创建一个XML字符串并将其作为请求实体设置到POST方法中。最后,执行请求并处理响应。 在实际开发中,为了确保数据的安全性,可能还需要添加身份验证、设置超时、处理异常等。此外,现代Java应用通常会...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    httpClient4jar包

    在描述中提到的“httpclient4”,指的是HttpClient 4.x系列,这是一个稳定且广泛使用的版本。 在HttpClient 4.4.1.jar中,包含了HttpClient的主要功能实现,如HTTP方法(GET, POST等)、连接管理、重定向处理、身份...

    httpClient发送HTTP请求

    以下是一个示例,展示了如何构建XML内容并作为POST请求的一部分: ```java String xmlData = "&lt;request&gt;&lt;param1&gt;value1&lt;/param1&gt;&lt;param2&gt;value2&lt;/param2&gt;&lt;/request&gt;"; HttpPost httpPost = new HttpPost(...

    httpclient4

    Java HttpClient 4,也称为Apache HttpClient 4,是Apache软件基金会开发的一个HTTP客户端实现库,用于处理与HTTP服务器的交互。这个库在Java编程环境中广泛使用,尤其对于网络请求的发送和响应的处理,提供了强大而...

    httppost和httpclient一组开发包

    `HttpPost`实例化后,可以通过`setEntity`方法设置请求体,这可以是一个`HttpEntity`对象,如`StringEntity`或`MultipartEntity`,用来承载JSON、XML或文件数据。 在使用`HttpClient`和`HttpPost`进行网络请求时,...

    httpClient4 最新帮助文档

    HttpClient 4 是一个由 Apache 软件基金会开发的Java库,用于执行HTTP请求并处理响应。这个库在Web服务和API交互、自动化测试、数据抓取等场景中广泛应用。最新帮助文档通常会涵盖HttpClient 4的主要功能、用法、...

    httpClient httpPost httpGet 所需jar包

    2. HttpPost:HttpPost是HttpClient库中的一个类,用于执行HTTP POST请求。POST请求常用于向服务器发送数据,例如提交表单或上传文件。HttpPost对象允许我们设置请求头、URL以及请求体内容。 3. HttpGet:HttpGet是...

    httpclient发送post请求.docx

    执行POST请求是通过调用`httpClient`对象的`execute`方法实现的,它接收`HttpPost`对象作为参数,返回一个`CloseableHttpResponse`,代表服务器的响应。 ```java CloseableHttpResponse response = httpClient....

    发送Post请求,内容格式为xml,并获取响应内容

    在给定的代码片段中,主要展示了如何使用Java中的Apache HttpClient库发送一个包含XML数据的POST请求,并接收响应。下面是对关键部分的详细分析: 1. **导入必要的库**:代码首先导入了处理网络请求、输入输出流...

    Java HttpClient 全部的jar包

    总结起来,这些jar包共同构成了一个完整的Java HttpClient环境,能够处理各种复杂的HTTP通信任务,从简单的GET和POST请求到复杂的文件上传、多部分表单数据处理,以及与Web服务器的高级交互。开发者可以根据项目需求...

    HttpClientUtil工具类发送get和post请求,支持http和https,支持发送文件

    HttpClient是Java中用于执行HTTP请求的一个强大库,它提供了丰富的功能,可以方便地进行GET、POST请求,并且能够处理复杂的网络交互,包括发送文件等操作。下面我们将详细讨论HttpClientUtil工具类如何实现这些功能...

    HttpClient发送http请求(post+get)需要的jar包+内符java代码案例+注解详解

    以下是一个使用HttpClient发送POST请求的Java代码示例: ```java import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import...

    httpclient获取目标网站内容,get、post方式(可运行)

    在Java编程中,Apache HttpClient库是一个非常常用的工具,用于执行HTTP请求,如GET和POST,以获取或提交网络上的数据。HttpClient提供了丰富的功能,包括设置请求头、处理重定向、管理连接池等,使得开发者可以高效...

Global site tag (gtag.js) - Google Analytics