OkHttp——简单使用

原创 2016年08月28日 18:19:03

一、GET传输

①、OkHttp默认使用GET传输
②、使用Request发送请求。
③、使用Response接收服务器的请求。
④、通过CallBack接口回调来处理接收的时候。 OkHttp提供异步,和非异步两种方式。
示例:
public static void main(String[]args){
		//创建OkHttpClient
		OkHttpClient client = new OkHttpClient();
		//创建请求类。通过使用Builder来构造Request类,默认GET传输
		Request request = new Request.Builder()
						.url("https://www.zhihu.com/")
						.build();
		//创建用来连接服务器的Call类
		Call call = client.newCall(request);
		//将Callback回调,放入队列中。  执行异步任务
		call.enqueue(new Callback() {
			
			@Override
			public void onResponse(Call arg0, Response arg1) throws IOException {
				// TODO Auto-generated method stub
				//判断是否成功连接服务器,并返回数据
				if (arg1.isSuccessful()){
					//获取返回数据的内容
					System.out.println(arg1.body().string());
				}
			}
			
			@Override
			public void onFailure(Call arg0, IOException arg1) {
				// TODO Auto-generated method stub
				
			}
		});

		try {
			//直接在该线程中执行任务,阻塞队列,等待服务器返回结果生成Response对象
			Response response = call.execute();
			System.out.println(response.body().string());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

补充基础
①、如何设置Header
		Request request = new Request.Builder()
						.addHeader("Content-Type", "text-plain")
						.header("host", "...")
						.build();
通过使用addHeader()和header()方法通过键值对的形式来创建请求的头部。
addHeader()的header()的区别:
addHeader():当存在相同的键名时候,不会覆盖该键名的数据,而是添加数据。
header():会覆盖当前相同键名的数据

②、如何通过Response获取服务器传回的数据
//获取全部的头部数据
Headers headers = response.headers();
//遍历数据(详细方法请参照api文档)
for(String name : headers.names()){
   System.out.println(headers.get(name));
}
					
//获取全部的内容数据
ResponseBody body = response.body();
//由于数据是存放在内存的,所以当内容数据小于1M就能直接接收。
String str = body.string();
//但是当大于1M的时候,就要通过流,传输到硬盘中
InputStream is = body.byteStream();

二、POST传输(仿表单传输)
①、上传简单key-value
OkHttpClient client = new OkHttpClient();
		//创建上传的数据(仿表单的形式)
FormBody body = new FormBody.Builder()
		.add("name", "chen")
		.add("pwd", "hello")
		.build();
//创建请求类,设定为Post请求,并放入要上传的数据
Request request = new Request.Builder()
		.url("https://www.zhihu.com/")
		.post(body)
		.build();
②、上传单个文件
public static final MediaType MEDIA_TYPE_FILE = MediaType.parse("application/octet-stream;charset:utf-8");
public static void main(String[]args){
        OkHttpClient client = new OkHttpClient();
	//将Body设置为表单,然后通过addFormDataPart()上传表单。
	MultipartBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
			   .addFormDataPart("data", "da.txt", RequestBody.create(MEDIA_TYPE_FILE, new File("asda")))
			   .build();
	Request request = new Request.Builder()
			.url("https://www.zhihu.com/")
			.post(body)
		        .build();
	}
原理:
表单上传文件的html表示:
Content-Disposition:form-data;name="images"                  
filename="storage/emulated/0/Camera/picture/tempeter.jpg"
Content-Type: application/octet-stream           

这里是文件的二进制数据...
name = "data"   fileName = "da.txt"   Content-Type:  MEDIA_TYPE_FILE
数据就是:new File("asda");

③、通过表单上传多个数据(文件,普通键值对)    (简称复合请求)
RequestBody body = new MultipartBody.Builder()
		.setType(MultipartBody.FORM)
		//上传文件
		.addPart(Headers.of("Content-Disposition","format-data;name=\"image\";filename=\"icon.png\""),
		RequestBody.create(MEDIA_TYPE_FILE, new File("image.png")))
		//上传普通键值对。
		.addPart(Headers.of("Content-Disposition","format-data;name=\"name\""),
		RequestBody.create(null, "chen"))
		.build();
}










相关文章推荐

okhttp3简单封装使用

  • 2017年05月15日 11:46
  • 5.73MB
  • 下载

Http请求框架 okHttp 简单使用介绍

(今天接触了Http请求框架,搜索了一篇关于okHttp框架的博文,在此备份。) okHttp: OKHttp是Android版Http客户端。非常高效,支持SPDY、连接池、GZI...

简单封装使用OkHttp3

  • 2017年06月30日 11:36
  • 3.03MB
  • 下载

OkHttp的简单使用

  • 2016年07月15日 11:29
  • 4.02MB
  • 下载

Okhttp的简单介绍和使用(一)

通过本篇可以了解到: 1、okhttp是什么 2、okhttp的优点 3、okhttp的简单使用
  • wuyinlei
  • wuyinlei
  • 2016年01月25日 13:47
  • 10928

okHttp简单封装使用

最近一个项目在使用okhttp 这里记录一下使用过程 首先在你gradle.build里面加入  compile 'com.squareup.okhttp:okhttp:2.6.0' 原始的使用...

学习笔记之-----OkHttp之使用与简单封装

一.OKHttp的简单使用: 1.简意:OKHttp是一个高效的Http库 2.优点: (1)支持SPDY,共享同一个Socket来处理同一个服务器的所有请求 (2)如果SPDY不可用,则通过连接池来...

okhttp的简单使用

okhttp是个不错的网络框架,我先说下我们项目的网络架构吧,主要就是okhttp,Gson还有EventBus三者串联起来,再加上对应的封装,就可以实现网络请求相关的业务逻辑了。 okhttp负责...

1.OkHttp的简单使用

1.OkHttp的简单使用官网: http://square.github.io/okhttp/github地址:https://github.com/square/okhttp简介HTTP是现代应用...
  • a109340
  • a109340
  • 2017年06月29日 12:19
  • 132
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OkHttp——简单使用
举报原因:
原因补充:

(最多只允许输入30个字)