socket 模拟 http 请求

在csdn里答复一个网友的实例代码

一下代码是通过socket请求一个HTTP服务的过程,通过模拟请求一个web的登录操作,然后处理服务器返回的消息。这里只是简单的打印出服务器返回的消息,可以根据需要解析相应的数据,根据数据状态处理你的业务逻辑。只是简单的实现你的要求,没有考虑程序的健壮性,如关闭流应该放在finally里面等。


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

/**
* SocketHttpTest.java V1.0 2012-4-12 上午10:33:07
*
* Copyright 2011 **** Technologies. All rights reserved.
*
* Modification history(By Time Reason):
*
* Description:
*/
public class SocketHttpTest {

/**
*
* <pre><b>功能描述:</b>程序入口
*
* @author :****(Kevin.xie)
* <b>创建日期 :</b>2012-4-12 上午10:33:10
*
* @param args
*
* <b>修改历史:</b>(修改人,修改时间,修改原因/内容)
*
* </pre>
*/
public static void main(String args[]) {

try {

// Post请求格式如下:
String postParams = "userName=kevin.xie&pwd=demo8888";
int paramsLen = postParams.length();

// 请求的参数
StringBuffer post = new StringBuffer(512);
// web的请求登录路径:demo为项目名称,user/login.do为登录的action
post.append("POST /demo/user/login.do HTTP/1.1\r\n");
// tomcat服务器及端口
post.append("Host: 127.0.0.1:8080\r\n");
post.append("Accept: text/html\r\n");
post.append("Connection: Close\r\n");
post.append("Content-Length: " + paramsLen + "\r\n");
post.append("Content-Type: application/x-www-form-urlencoded\r\n");// *
post.append("\r\n");
// 请求的参数
post.append(postParams);

// socket客户端连接本机的tomcat服务器,端口为8080
Socket socket = new Socket("127.0.0.1", 8080);

// socket客户端发送登录请求
PrintWriter outWriter = new PrintWriter(socket.getOutputStream());
// 发送post请求
outWriter.println(post);
outWriter.flush();

// socket客户端接收tomcat返回的数据
BufferedReader inReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

// 一下是服务器返回的数据--本机demo返回的是json更是的数据
System.out.println("**************** Server responsed ****************");
String tmp = "";
while ((tmp = inReader.readLine()) != null) {

// 解析服务器返回的数据,做相应的处理
System.out.println(tmp);
}

outWriter.close();
inReader.close();
} catch (Exception e) {

e.printStackTrace();
}
}
}


以下是tomcat服务器返回的数据

Server: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=9F51D84CDDB13004291EC883FD77A65E; Path=/demo/; HttpOnly Content-Type: application/json;charset=UTF-8 Content-Language: zh-CN Content-Length: 108 Date: Thu, 12 Apr 2012 03:14:05 GMT Connection: close {"struts.token":"FOZAQPTQPOIECS6H605BQ5Q0Z8MJ875O_1334200445717","AjaxResult":"0","values":{"errMsg":""}}


[img]http://dl.iteye.com/upload/attachment/0066/4454/ebf016ad-e05e-3378-9521-885b2d240c1e.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值