使用Socket发送接收HTTP请求(JAVA)
来源:互联网 发布:软件项目总结 编辑:程序博客网 时间:2024/05/22 14:55
最近本人毕业设计涉及到C51单片机发送HTTP给服务器,因此学习了HTTP协议的发送和接收。这里不是使用Http client之类封装好的操作,而是手动模拟。
HTTP协议位于应用层运行在TCP/IP之上,所以可以使用Socket建立TCP/IP链接之后,直接发送数据模拟HTTP协议。
Socket的知识请看
Java—Socket编程UDP/TCP
http://blog.csdn.net/xn4545945/article/details/8098646
关于HTTP协议请看
Java与Http协议
http://www.cnblogs.com/devinzhang/archive/2012/02/06/2340186.html
七层网络模型请看
OSI七层模型详解
http://blog.csdn.net/yaopeng_2005/article/details/7064869
不再赘述。
JAVA中有TCP/IP通道的Socket和基于UDP的DatagramSocket ,我们需要使用TCP/IP协议的Socket。
本文以请求百度首页www.baidu.com为例,首先与百度的服务器建立TCP/IP链接,端口号是网页服务器默认的80。
之后我们发送最简短请求,只留下两行,其实两行数据只要第一行GET也能请求成功。
GET http://www.baidu.com/ HTTP/1.1Host: www.baidu.com <-空行 <-空行
这四行写在代码里面是
"GET http://www.baidu.com/ HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n"
- ‘\r’是回车,’\n’是换行。\r\n连在一起就能完成我们文本编辑下的换行功能,即回车键。
- 输入完最后两行空行,服务器才会判断你的请求已经输入完毕,否则服务器还在等待请求输入。
- 请求完之后,服务器便会返回结果。
JAVA代码
package com.example.http;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.Socket;import java.net.UnknownHostException;public class FakeHttp1 { private final String URL = "www.baidu.com"; private final String CONTENT = "GET http://www.baidu.com/ HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n" ; private final int PORT = 80 ; public void sendHTTP(){ try { Socket socket = new Socket(URL,PORT); //建立TCP/IP链接 OutputStream out = socket.getOutputStream() ; BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8")); out.write(CONTENT.getBytes()); //发送数据 int d = -1 ; while((d=in.read())!=-1){ //接收 System.out.print((char)d); //输出到控制台 } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args){ new FakeHttp1().sendHTTP(); }}
0 0
- 使用Socket发送接收HTTP请求(JAVA)
- 使用SOCKET发送HTTP请求
- 使用Socket发送Http请求
- 使用Socket发送Http请求
- java socket发送http请求
- 使用socket发送http请求(GET/POST)
- 使用socket发送http请求(GET/POST)
- 使用socket发送http请求(GET/POST)
- 使用java发送HTTP请求
- socket 发送http请求
- socket发送http请求
- socket 发送http请求
- HttpURLConnection发送接收Http请求
- Java使用socket接收http请求,read方法阻塞的问题
- c socket 发送http请求 (一)
- howto使用http接收和发送简单的xml请求
- Java Socket发送与接收HTTP消息简单实现
- Java Socket发送与接收HTTP消息简单实现
- OpenStack配额(Quota)设计与实现
- 超级ListView,包括下拉刷新,自动翻页加载数据,异步下载、加载图片缓存等
- 机器视觉与概率模型
- 注意Javascript数据类型
- 史上最详细的JavaScript事件使用指南
- 使用Socket发送接收HTTP请求(JAVA)
- 转TextView的一些高级显示,谢谢
- VIM常用命令学习
- 通过Callable,Future实现十亿数据的并行相加
- 5月记-电面、学习、考试、纠结
- 28.数据存储 plist 偏好设置 归档
- centos下部署ngnix和php
- Jersey+EclipseJavaEE+Apache-Tomcat8 开发Rest服务
- Apache Thrift - 可伸缩的跨语言服务开发框架