http协议

31 篇文章 0 订阅
21 篇文章 0 订阅

四层协议:

应用层

传输层

网络互联层

主机到网络层

ip协议  类似信封通过访问ip地址,确定唯一的一台主机,通过端口访问具体的程序。

tcp/udp :TCP面向连接的,连接时三次握手,断开时四次挥手,比较安全,效率低一些。

udp面向无连接的,类似邮局,只把信放入信封,不管有没有收到,效率高安全性差。

socket:java做tcp/ip开发的一套接口。

http协议基于tcp,http->tcp->ip->底层协议

http超文本传输协议

http1.0 每一次请求之后都会断开。

http1.1每次请求之后可以不必断开,效率高很多。

请求:get/post  put head trace delete(一共7种方式)

get: 参数放url后面,url跟参数用?隔开,每一个参数用&隔开,浏览器对提交参数的长度有限制,不超2k

post:参数的组拼方式一样,每个参数之间用&隔开key=value,参数放在请求体里

用火狐查看只需这样:开发者-》Web控制台   

Chrome 更多工具-》开发者工具 NetWork All Name  选中一个事件,然后便可以看到header等。

请求行: 请求地址,请求方法,请求用到的 http 协议。

请求头:

get:

Host:请求主机地址。

响应式开发,User-Agent:判断当前浏览器类型。

Accept:当前客户端可以接收的数据类型。

        Accept-Language:当前浏览器支持的语言。

        Accept-Encoding:服务端与客户端传递数据时,表示客户端可以接受的压缩数据类型。

        Referer:提交的url。

        Connection:连接状态。

post:多了两项

content-type:请求体类型,

         content-length:上传的数据有多长

请求体:post才有,会对请求内容编码,把内容中汉字编码。

响应:

响应行:

200~299 请求成功

300~399 服务端收到请求,但需要客户端做进一步动作

400~499 请求错误,客户端的问题

500~599 服务端的错误

响应头:

Accept-Ranges:"bytes"数据返回类型的单位。

Content-Length:相应体长度。

Content-Type:响应的类型。

Date:当前的时间。

Etag:根据当前服务器端的内容,若是编码没发生改变,则直接调用缓存。

Last_Modify:最后更新时间。便于缓存。若是没有发生改变,则直接调用缓存。

Server:服务端的类型。

响应体:

html代码,用流的方式获得,展示成html内容。

网络传输数据都是通过流。

网页源码查看核心代码:

把按钮点击,然后加上这个事件监听即可。

public class MainActivity extends Activity {
	private EditText et_text;
	private Button bt;
	private TextView tv_code;
	private Handler handler=new Handler(){
		@Override
		public void handleMessage(Message msg) {
			String str=(String) msg.obj;
			tv_code.setText(str);
		}		
	};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        et_text=(EditText) findViewById(R.id.et_url);
        bt=(Button) findViewById(R.id.bt_getCode);
        tv_code=(TextView) findViewById(R.id.tv_code);
        bt.setOnClickListener(new MyListener());
        et_text.setText("http://10.0.2.2:8080");
    }
    	private class MyListener implements OnClickListener
    	{
			@Override
			public void onClick(View v) 
			{
				new Thread(){
					@Override
					public void run() {
						String path=et_text.getText().toString().trim();
						try {
							URL url=new URL(path);
							HttpURLConnection connection=(HttpURLConnection) url.openConnection();
							connection.setRequestMethod("GET");//设置请求方式,方法要大写,默认采用GET方法
							connection.setConnectTimeout(30000);
							connection.setReadTimeout(30000);
							int code=connection.getResponseCode();
							if(code==200){
								InputStream inputStream=connection.getInputStream();
								String result=Utils.getStringFromStream(inputStream);
								Message message=new Message();
								message.obj=result;
								handler.sendMessage(message);
							}
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}.start();
			}    	
        }
}

可以参考: 点击打开链接  完整些。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值