OkHttp简介
一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献,用于替代HttpUrlConnection和Apache HttpClient。
OkHttp的优势
发送Get请求
/**
* 同步get请求
*/
public static void syncGet() throws Exception{
String urlBaidu = "http://www.baidu.com/";
OkHttpClient okHttpClient = new OkHttpClient(); // 创建OkHttpClient对象
Request request = new Request.Builder().url(urlBaidu).build(); // 创建一个请求
Response response = okHttpClient.newCall(request).execute(); // 返回实体
if (response.isSuccessful()) { // 判断是否成功
/**获取返回的数据,可通过response.body().string()获取,默认返回的是utf-8格式;
* string()适用于获取小数据信息,如果返回的数据超过1M,建议使用stream()获取返回的数据,
* 因为string() 方法会将整个文档加载到内存中。*/
System.out.println(response.body().string()); // 打印数据
}else {
System.out.println("失败"); // 链接失败
}
}
Post提交表单
/**
* Post提交表单
*/
public static void postFromParameters() {
String url = "http://v.juhe.cn/wepiao/query"; // 请求链接
String KEY = "9488373060c8483a3ef6333353fdc7fe"; // 请求参数
OkHttpClient okHttpClient = new OkHttpClient(); // OkHttpClient对象
RequestBody formBody = new FormBody.Builder().add("key", KEY).build(); // 表单键值对
Request request = new Request.Builder().url(url).post(formBody).build(); // 请求
okHttpClient.newCall(request).enqueue(new Callback() {// 回调
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());//成功后的回调
}
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());//失败后的回调
}
});
}
Post提交字符串
/**
* Post提交字符串
* 使用Post方法发送一串字符串,但不建议发送超过1M的文本信息
*/
public static void postStringParameters(){
MediaType MEDIA_TYPE = MediaType.parse("text/text; charset=utf-8");
String url = "http://v.juhe.cn/wepiao/query"; // 请求链接
OkHttpClient okHttpClient = new OkHttpClient(); // OkHttpClient对象
String string = "key=9488373060c8483a3ef6333353fdc7fe"; // 要发送的字符串
/**
* RequestBody.create(MEDIA_TYPE, string)
* 第二个参数可以分别为:byte[],byteString,File,String。
*/
Request request = new Request.Builder().url(url)
.post(RequestBody.create(MEDIA_TYPE,string)).build();
okHttpClient.newCall(request).enqueue(new Callback() {
public void onResponse(Call call, Response response) throws IOException {
System.out.println(response.body().string());
}
public void onFailure(Call call, IOException e) {
System.out.println(e.getMessage());
}
});
}