HttpClient4 Post XML到一个服务器上
来源:互联网 发布:淘宝 摄魂猎手vn 编辑:程序博客网 时间:2024/05/02 02:28
现在网上介绍的HttpClient基本上全是3.x版本的内容,HttpClient4的API变化相对3已经变化很大,对HttpClient4做了简单的研究后,完成了一个HttpClient4 Post XML功能。
对于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
*
* @author leizhimin 2010-7-8 22:29:28
*/
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();
}
}
}
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
*
* @author leizhimin 2010-7-8 22:29:28
*/
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数据
*
* @author leizhimin 2010-7-8 3:22:53
*/
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();
}
}
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数据
*
* @author leizhimin 2010-7-8 3:22:53
*/
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请求
*
* @author leizhimin 2010-7-8 1:02:42
*/
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>");
}
}
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请求
*
* @author leizhimin 2010-7-8 1:02:42
*/
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>
<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>
3、在2的基础,上改为单线程重用连接模式
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.impl.conn.SingleClientConnManager;
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数据,单线程重用连接模式
*
* @author leizhimin 2010-7-8 3:22:53
*/
public class TestPostXml2 {
public static void main(String[] args) throws IOException {
SingleClientConnManager sccm =new SingleClientConnManager();
HttpClient httpclient = new DefaultHttpClient(sccm);
// HttpGet httpget = new HttpGet(urisToGet[i]);
// 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();
}
}
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.impl.conn.SingleClientConnManager;
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数据,单线程重用连接模式
*
* @author leizhimin 2010-7-8 3:22:53
*/
public class TestPostXml2 {
public static void main(String[] args) throws IOException {
SingleClientConnManager sccm =new SingleClientConnManager();
HttpClient httpclient = new DefaultHttpClient(sccm);
// HttpGet httpget = new HttpGet(urisToGet[i]);
// 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();
}
}
文章转载 http://lavasoft.blog.51cto.com/62575/347157
0 0
- HttpClient4 Post XML到一个服务器上
- HttpClient4 Post XML到一个服务器上
- HttpClient4 Post XML到一个服务器上
- HttpClient4 Post XML到一个服务器上
- HttpClient4 Post XML到一个服务器上
- HttpClient4.5 post请求xml到服务器
- HttpClient4 Post XML数据
- HttpClient4 Post XML数据
- Httpclient4.5.2 POST Json 数据到另外一个网站, 解析
- HttpClient4.5.2通过POST发送XML
- php post xml 到服务器 以及服务器如何接受(服务器间通过xml通讯)
- AFNetworking 如何POST一个JSON数据到服务器
- AFNetworking 如何POST一个JSON数据到服务器
- afnetworking如何post一个json数据到服务器
- AFNetworking 如何POST一个JSON数据到服务器
- AFNetworking 如何POST一个JSON数据到服务器
- AFNetworking post一个图片的data 到服务器
- AFNetworking post一个图片的data 到服务器
- Kisai Quasar:看时间还要考验智商?
- SecureCRT无法远程登录到virtualbox中linux系统的解决方法
- 通过excel生成SQL语句完成数据库操作
- RAID学习
- SQL 与 orcale 数据库对BOM多级展开的实现方法
- HttpClient4 Post XML到一个服务器上
- Android startActivityForResult的使用
- 第一次真正的开始写技术博客
- Oracle数据库迁移
- leetcode题目:Single Number和Single Number II
- ckeditor4.x 自定义插件的按钮显示文字
- android权限
- 今天他还是没理我
- 小数点后位数,有效数字控制(圆的周长,面积)