您的位置:首页 > 理论基础 > 计算机网络

java通过Socket执行HTTP的POST方法

2013-04-23 10:28 537 查看
package net.java2000.net;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.URLEncoder;

/**

 * 使用 Socket 模拟HTTP的POST提交。

 * 

 * @author 赵学庆,Java世纪网(java2000.net)

 * 

 */

public class SocketHttpPost {

  public static void main(String[] args) {

    try {

      // 提交的数据

      String data = URLEncoder.encode("name", "UTF-8") + "="

          + URLEncoder.encode("老紫竹", "UTF-8");

      data += "&" + URLEncoder.encode("message", "UTF-8") + "="

          + URLEncoder.encode("欢迎光临JAVA世纪网", "UTF-8");

      // 建立连接

      String hostname = "www.java2000.net";

      int port = 80;

      InetAddress addr = InetAddress.getByName(hostname);

      Socket socket = new Socket(addr, port);

      // 发送数据头

      String path = "/test.jsp";

      BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),

          "UTF8"));

        
     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"); // 以空行作为分割

      // 发送数据

      wr.write(data);

      wr.flush();

      // 读取返回信息

      BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream(),

          "UTF-8"));

      String line;

      while ((line = rd.readLine()) != null) {

        System.out.println(line);

      }

      wr.close();

      rd.close();

    } catch (Exception e) {

    }

  }

}

 

运行结果 

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世纪网 

<!-- 提交来的数据结束--> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: