Java中在超文本协议中客户端对服务端的请求

来源:互联网 发布:nosql数据库的优势 编辑:程序博客网 时间:2024/06/16 00:13
Http协议: (HTTP,HyPerText Transfer Protocol)超文本传输协议
采用的最广泛的一种网络协议。设定HTTP的最初的目的是为了提供发布和接收HTML页面的。
基于TCP/IP协议的应用层的协议。
TCP/UDP
应用层:Http协议,FTP(传递数据),SMTP,POP3
表示层:
会话层:
传输层:TCP,UDP
网络层:IP协议,识别主机
数据链路层:定义数据在物理层上的传输
物理层:网线
Http协议:定义客户端--->服务单的交互。
一次客户端的请求--->一次服务端的交互。
版本:HTTP/1.0,HTTP/1.1
HttpWatch:
HTTP:请求和响应
Request:
请求行:一个
POST /Day21_Server/LoginServlet HTTP/1.1
请求方式:
GET/POST/HEAD/OPTIONS/DELETE/PUT。。。
请求路径:
/Day21_Server/LoginServlet
协议版本:
HTTP/1.1
请求头:若干
Accept: text/html, application/xhtml+xml, */*
浏览器能够接受的格式


X-HttpWatch-RID: 50263-10020
Referer: http://10.0.166.127:8080/Day21_Server/index.html
Accept-Language: zh-CN
接受的语言:中文
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Host: 10.0.166.127:8080

Content-Length: 22

DNT: 1
Connection: Keep-Alive
Cache-Control: no-cache
实体内容:
username=admin&pwd=123
Response:
状态行:
HTTP/1.1 200 OK


响应头:
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=gbk
Transfer-Encoding: chunked
Date: Tue, 18 Oct 2016 01:39:46 GMT


实体内容:
admin,您登录成功,欢迎回来。。
JDK提供的类:(重点)
java:HttpURLConnection:
Apache提供支持:(了解性)
HttpClient:


URL:(Uniform Resource Locator)统一资源定位符,也被称为网页地址。
http://10.0.166.127:8080/Day21_Server/aa.jpeg


http:协议
10.0.166.127:主机
:8080:端口号
Day21_Server/aa.jpeg:资源的具体的路径


//需求1:根据网址下载图片
step1:提供String类型的地址:baseUrl


step2:转为URL类型的对象


step3:获取网络连接对象:HttpURLConnection:
url.openConnection();//URLConnectrion


step4:请求参数的设置
connection.setRequestMethod("GET/POST");
connection.setConnectTimeOut(毫秒);


step5:申请连接:connect()


step6:获取服务端的响应码:connection.getResponseCode()--->int
200,404

step7:获取IO流
connection.getInputStream();-->InputStream
IO读写




客户端访问服务端:
资源:图片,音频,json数据。。
登录:
客户端,先将用户名,密码,传递给服务端。服务端给予响应。


GET:
url:username=admin&pwd=123
http://10.0.166.127:8080/Day21_Server/LoginServlet?username=admin&pwd=123


?:分隔符:
url?传递的数据


=:参数名=参数值


&:分隔符:
分隔多个参数名值对。
POST:
IO流,将username=admin&pwd=123,写给服务端。
登录:get方式的步骤
step1:提供登录的网址:
step2:提供参数:由控制台输入
step3:创建URL对象
url?params
params:username=admin&pwd=123
step4:设置参数
step5:获取响应码:200
step6:获取InputStream流


登录:post方式的登录
step1:提供登录的网址
step2:提供参数:
step3:创建URL对象
step4:设置参数

connection.setDoOutput(true);//打开输出流,用于给服务器写数据
connection.setDoInput(true);//打开输入流,用于获取服务器的数据


增加的步骤:获取输出流,将参数,以流的形式,写给服务端。
connection.getOutputStream();//输出流

step5:
step6:
HttpURLConnection:java官方推荐
HttpURLConnection:对象


HttpClient:Apache基金会组织

客户端:HttpClient
请求方式:HttpGet,HttpPost
响应:HttpResponse


网络实体:HttpEntity:载体
客户端-->服务端
服务端-->客户端


EntityUtils:实体的工具

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。


用于网络之间传递数据消息的一种数据格式。


游戏:id,版本,图标,大小。。。
class Game{int id,String version,String icon....}


天气:空气湿度,温度,风向。。。




客户端: 服务端:


传递字符串:


长的特殊的字符串:由无序的名值对组成。
String json ="";

{}-->一个对象:JSON对象--->javabean对象


[]-->一个数组:JSON数组--->多个javabean对象
Person p1 = new Person(张三,30);//




JavaBean:java的实体类,模型类。
对象:数据的封装


class:
1.Person,Cat,Dog,Animal,Book。。。。
属性




2.Test类:
Demo01
public static void main(String[] args){
创建对象,调用方法。。。
}


3.工具类:
DateUtils,HttpUtils
Arrays,Collections,EntityUtils

静态方法:


第一部分:
服务端:产生json数据
A:javabean的类
B:创建出对象:
C:对象-->json字符串


第二部分:
客户端:通过Http协议访问服务端,获取到json数据
HttpURLConnection


第三部分:
解析json数据-->javabean对象,List<javabean>

step1:获取到json后,先百度-->在线格式化。
step2:根据格式化的json字符串,创建了JavaBean类:属性名,属性值
step3:解析:String json--->Person p
A:先创建一个javabean对象:Person p = new Person();
B:根据json字符串,构建:JSONObject
JSONObject jsonObject = new JSONObject(json);
C:操作jsonObject,调用getXXX(key)-->value,将取到value值,设置给p的属性。


getString(name)-->zhangsan
getInt(age)-->30

1 0
原创粉丝点击