第一组:HttpURLConnection类
从服务器获取数据可以总结为这几步:
# GET请求方式的关键代码:
URL url = new URL(netPath);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMedthod("GET")//没有写这个方法,就默认为get请求方式,
conn.connect();//发起连接,
if(conn.getResponseCode==200){//表示连接成功
InputStream is = conn.getInputStream();//从服务器端返回的结果是以流的形式回来
}
# POST请求关键代码
conn.setRequestMethod("POST")
conn.setDoOutput(true);//设置允许写出数据,默认不允许,因为默认就是GET请求方式
conn.setDoInput(true);//设置当前链接可以从服务器获取数据,默认就是true,就是允许的
Outputstream os = conn.getOutputstream();
os.write(("use=abc&ups=123").getBytes());
os.flush;
conn.connect();//发起连接
```
第二组:OkHttp:
这是square公司推出的处理Http协议的网络请求的工具类
- 一般的get请求;
- 一般的post请求;
- 基于http下载文件;
- 加载图片;
- 支持请求回调,直接返回对象或者是对象集合
- 支持session的保持
GET请求方式的关键代码
OkHttpClient client = new OkHttpClient();//得到客户端
Request.Builder builder = new Request.Builder();//里面封装了Builder类作为请求类的静态内部类
builder.url(netPath);
builder.get();//指定为get请求方式
Request request =builder.build();//采用了构建者模式完成得到请求
//一般使用一句话来完成Request request = new Request.Builder().url(netPath).get().build();
Response response = client.newCall(request).execute();//客户端发起请求,并且得到响应的对象
if(response.isSuccessful()){
//表示联网成功了
//可以获得响应的信息,
byte[] data = response.body().bytes;
String str = response.body().String();
//可以发现,信息都是存在response.body()中。
}
Post请求方式的关键代码
OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody,Builder();//请求参数,是放在了RequestBody中
body.add("useName","tom")//是以键值对的形式来存贮数据
body.add("password","122")
.build();//也是采用的构建者模式
Request request = new Request.Builder().url(netPath).post(body).build();
//之后就与get方式类似了,不同的是处理看你需求
第三组HttpClient
由apache推出的获取网络请求数据的框架。
一般使用DefaultHttpClient子类去实现
GET请求方式的关键代码
HttpClient client = new DefaultHttpClient();//也是通过先得到客户端
HttpGet httpGet = new HttpGet(netPath);//得到httpGet对象,直接将参数路径传递进入
HttpResponse response =client.execute(httpGet);//直接发起请求
if(response.getStatasLine().getStatusCode()==200){
//表示如果连接网络成功的话
HttpEntity entity = response.getEntity()//获取响应实体
InputStream is = entity.getContent();//获取里面的内容
//本身也提供了一中封装好的处理方式
String str = EntityUtils.toString(entity);
byte[] data = EntityUtils.toByteArray(entity);
}
POST请求方式的关键代码
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(netPath);//表明是post的请求方式
List<BasicNameValuePair> paramters = new ArrayList<>();//创建一个容器用于提交数据的保存
BasicNameValuePair p = new BasicNameValuePair("user","password");//得到一个对象
paramters.add(p);
HttpEntity entity = new UrlEncodedFormEntity(paramters);//将参数封装到请求实体中
post.setEntitiy(entity);//将请求实体放在Post里面。
//之后就是发起请求就可以了
HttjpResponse response = client.execute(post);