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世纪网
<!-- 提交来的数据结束-->
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世纪网
<!-- 提交来的数据结束-->
相关文章推荐
- JAVA代码:通过Socket执行HTTP的POST方法
- JAVA代码:通过Socket执行HTTP的GET方法
- java通过HttpServletRequest获取post请求中的body内容的方法
- java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源
- C#通过WebClient/HttpWebRequest实现http的post/get方法与java对接
- C#通过WebClient/HttpWebRequest实现http的post/get方法与java对接
- Java 入门 之 HTTP 的 GET & POST 方法
- JAVA通过HttpURLConnection 上传和下载文件的方法
- JAVA发送http get/post请求、调用http接口、方法
- 通过HTTP post方法请求资源可以带查询字符串吗?
- java实现http post方法发送数据
- Android HTTP实例 使用GET方法和POST方法发送请求(通过Apache接口实现)
- Java: HttpURLConnection 模拟登录方法 (带cookie 的Post/Get)_20160908_七侠镇莫尛貝
- java通过读取本地文件获取反射方法参数,执行对象方法
- Java 通过httpClient Post方式提交xml,并从服务端返回数据
- 纯Java通过SSH执行Linux命令的方法及代码
- 【JAVA】通过URLConnection/HttpURLConnection发送HTTP请求的方法(一)
- Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)
- 如何调用http接口通过get()/post()方法传参
- JAVA发送http get/post请求,调用http接口、方法