java通过Socket执行HTTP的POST方法

来源:互联网 发布:网络参与赌博如何量刑 编辑:程序博客网 时间:2024/05/18 02:52
  1. package net.java2000.net;
  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;
  6. import java.net.InetAddress;
  7. import java.net.Socket;
  8. import java.net.URLEncoder;
  9. /**
  10.  * 使用 Socket 模拟HTTP的POST提交。
  11.  * 
  12.  * @author 赵学庆,Java世纪网(java2000.net)
  13.  * 
  14.  */
  15. public class SocketHttpPost {
  16.   public static void main(String[] args) {
  17.     try {
  18.       // 提交的数据
  19.       String data = URLEncoder.encode("name""UTF-8") + "="
  20.           + URLEncoder.encode("老紫竹""UTF-8");
  21.       data += "&" + URLEncoder.encode("message""UTF-8") + "="
  22.           + URLEncoder.encode("欢迎光临JAVA世纪网""UTF-8");
  23.       // 建立连接
  24.       String hostname = "www.java2000.net";
  25.       int port = 80;
  26.       InetAddress addr = InetAddress.getByName(hostname);
  27.       Socket socket = new Socket(addr, port);
  28.       // 发送数据头
  29.       String path = "/test.jsp";
  30.       BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),
  31.           "UTF8"));
  32.               wr.write("POST " + path + " HTTP/1.0\r\n");
            wr.write("Host: "+host+"\r\n");
            wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
            wr.write("Content-Length: " + data.length() + "\r\n");
            wr.write("\r\n"); // 以空行作为分割
  33.       // 发送数据
  34.       wr.write(data);
  35.       wr.flush();
  36.       // 读取返回信息
  37.       BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream(),
  38.           "UTF-8"));
  39.       String line;
  40.       while ((line = rd.readLine()) != null) {
  41.         System.out.println(line);
  42.       }
  43.       wr.close();
  44.       rd.close();
  45.     } catch (Exception e) {
  46.     }
  47.   }
  48. }
 
运行结果 
HTTP/1.1 200 OK 
Date: Sun, 31 Aug 2008 00:39:46 GMT 
Server: Apache/2.2.4 (Win32) mod_jk/1.2.26 
Vary: Host,Accept-Encoding 
Set-Cookie: JSESSIONID=2F417D101EEF54608D7115A109C4FC3C; Path=/ 
Content-Length: 333 
Connection: close 
Content-Type: text/html;charset=UTF-8 


<!-- 测试页内容开始 --> 
这里是JAVA世纪网,java2000.net。老紫竹欢迎你的光临。 
本站以提供高质量的,验证过的JAVA代码,资料和项目为目标。 
<!-- 测试页内容结束 --> 
<!-- 提交来的数据开始--> 
你好:老紫竹 
欢迎光临JAVA世纪网 
<!-- 提交来的数据结束--> 
原创粉丝点击