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 * * 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数据 * * 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请求 * * 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>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数据,单线程重用连接模式 * * 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(); } }