模拟浏览器向服务器发送和接收数据
2011-02-17 17:01
253 查看
创建一个服务器程序,用来接收和返回数据:
表明我们不能直接创建这个对象,也没有任何静态方法能够返回这个对象.于是我们需要绕一把..先获得 URL对象,再利用
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request.getMethod()); //获取请求方式
System.out.println(request.getHeader("referer")); //获取请求页面
System.out.println(request.getParameter("name")); //获取参数
response.getOutputStream().write("Hello".getBytes()); //向浏览器回送数据
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}接下来,再创建一个Java程序向这个服务器程序发送请求,类 HttpURLConnection提供方法获取和发送请求数据.但是构造方法
protected
HttpURLConnection(URL u)
表明我们不能直接创建这个对象,也没有任何静态方法能够返回这个对象.于是我们需要绕一把..先获得 URL对象,再利用
openConnection()返回HttpURLConnection对象:
public void sendHttp() throws IOException{
URL url = new URL("http://localhost:8080/ImitateRequest/servlet/servlet"); //设置要访问的链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();//获取HttpURLConnection的对象
conn.setDoOutput(true); //默认值为false,不能传递参数
conn.setRequestMethod("POST");//设置请求方式
conn.setRequestProperty("referer", "http://www.sina.com/index.html");
OutputStream out = conn.getOutputStream();
out.write("name=aaaa".getBytes()); //向服务器发送一个值为"aaaa"的name参数,如果conn的DoOutput属性值为false,此处将抛出异常
conn.getResponseCode(); //获取响应状态码
}以上是发送一次请求需要掌握的方法,接下来是读取一次请求:
public void readHttp() throws IOException{
URL url = new URL("http://localhost:8080/ImitateRequest/servlet/servlet"); //设置请求的链接
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
System.out.println(conn.getResponseCode()); //查看响应状态码
System.out.println(conn.getHeaderField("Content-Length")); //响应文本内容的长度
InputStream in = conn.getInputStream(); //获取一个和服务器返回的内容相关联的流
try{
int len = 0;
byte[] buffer = new byte[1024];
while((len = in.read(buffer))>0){
System.out.println(new String(buffer,0,len)); //输出到控制台
}
}finally{
if(in!=null)
try{
in.close();
}catch(Exception e){
}
}
}常用的一些HTTP协议请求头:
Request | GET /h.gif?pid=113&monkey=cool HTTP/1.1 | 请求方式 请求路径 请求版本 |
Accept | image/png, image/svg+xml, image/*;q=0.8, */*;q=0.5 | 浏览器可接收的类型 |
Referer | http://hao123.com/ | 来源路径 |
Accept-Language | zh-CN | 浏览器可以接收的语言 |
User-Agent | Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) | 浏览器的厂商信息 |
Content-Type | text/html; charset=UTF-8 | 数据的内容类型 |
Accept-Encoding | gzip, deflate | 浏览器可以接收压缩后的数据 |
Host | nsclick.baidu.com | 请求的主机IP和端口号 |
Content-Length | 289 | 用于指定数据的总长度 |
Connection | Keep-Alive | 维持一个活动连接 |
Cache-Control | no-cache | 缓存情况 |
Cookie | BAIDUID=304614CF0781D6FABA00280E60983AF5:FG=1 | COOKIE |
相关文章推荐
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- java 网络 之 模拟浏览器给服务器发送数据
- JAVA编码转换的详细过程理解—>浏览器和服务器的接收和发送数据的编码
- 介绍一款chrom浏览器插件 DHC是一款使用chrome模拟REST客户端向服务器发送测试数据的谷歌浏览器插件
- 利用WebRequest来实现模拟浏览器通过Post方式向服务器提交数据
- HTTP 浏览器发送给服务器的数据编码问题
- Java使用HttpPost模拟浏览器向服务器添加数据
- 简单socket服务(三)实现多客户端向服务器发送数据并保证服务器接收到数据
- 用MapReduce 模拟日志发送,在Storm的Spout中接收UDP数据
- 服务器如何接收GPS定位器发送过来的数据
- 客户端读取本地文件的数据,发送到服务器,服务器接收并存储到文件中
- MQTT连接服务器发送和接收数据
- tcp模拟浏览器向 Tomcat服务器发送请求
- STM8S003F使用IO口模拟串口(三)使用中断方式发送和接收数据
- Ajax交互,浏览器接收不到服务器的Json数据(跨域问题)
- python中使用requests 模拟浏览器发送请求数据
- Go语言服务器开发之客户端向服务器发送数据并接收返回数据的方法
- Android向node.js编写的服务器发送数据并接收请求