对于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>
没有评论:
发表评论