[1]OkHttp介绍之Get、Post方法
来源:互联网 发布:相册制作视频的软件 编辑:程序博客网 时间:2024/05/17 23:12
一、作用
一般的get请求
一般的post请求
基于Http的文件上传
文件下载
加载图片
支持请求回调,直接返回对象、对象集合
支持session的保持
二、导包
导入okhttp3.6.0和okio包
三、get和post请求
1、get请求
1) OkHttpClient:新建一个OkHttpClient实例,用于处理请求。
2) Request:构建请求参数,如url,请求方式,请求参数,header等。
3) Call:生成一个具体请求实例,相当于将请求封装成了任务;两种方式:
①、call.execute(),非异步方式,会阻塞线程,等待返回结果。 ②、call.enqueue(Callback),异步方式。里面有onFailure()和onResponse()方法只能运行在非主线程,不能进行UI操作。可以用handler去操作UI界面。
4) Response:结果响应。
response.body().string()–>返回字符串(小文档);
.bytes()–>返回二进制字节数组
.byteStream()–>返回InputStream(超过1M的用这个)
2、Post请求
同上面差不多,但需要增加RequestBody(存放json数据)RequestBody.create(Json,json);或FormBody.Builder(存放表单)FormBody.Builder().add(“key”,”name”);来存储请求的参数信息,在Request.Builder增加post(RequestBody)的调用。
package com.example.myapplication;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import java.io.IOException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.Headers;import okhttp3.MediaType;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;/** * author:黄夏莲 * time:2017.04.10 */public class MainActivity extends AppCompatActivity { Executors me; ExecutorService executorService; String url = "https://www.baidu.com/"; String []json=new String[]{"abc"}; private Headers headers; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* executorService = me.newFixedThreadPool(5); for(int i=0;i<20;i++){ Runnable r = new Runnable() { @Override public void run() { Log.i("TAG",Thread.currentThread().getName()); } }; executorService.execute(r); }*/ /*1) OkHttpClient:新建一个OkHttpClient实例,用于处理请求。 2) Request:构建请求参数,如url,请求方式,请求参数,header等。 3) Call:生成一个具体请求实例,相当于将请求封装成了任务;两种方式: ①、call.execute(),非异步方式,会阻塞线程,等待返回结果。 ②、call.enqueue(Callback),异步方式。 4) Response:结果响应。*/ new Thread(new Runnable() { @Override public void run() {// onGetNet(); try { //提交json數據// String a = post(url,json[0]); String a = postString(url); Log.i("TAG",a); for(int i=0;i<headers.size();i++){ Log.i("TAG",headers.name(i)+":"+headers.value(i)+";"); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } //get异步 public void onGetNet() { final String url = "https://www.baidu.com/"; OkHttpClient okHttpClient = new OkHttpClient(); Request request = new Request.Builder().url(url).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Log.i("TAG", "网络请求失败"); } @Override public void onResponse(Call call, Response response) throws IOException { Log.i("TAG", "网络请求成功" + "response.body().string():" + response.body().string()); } }); } //get非异步 private String run(String url) throws IOException { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url(url) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } //post //①提交json数据 public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); OkHttpClient client = new OkHttpClient(); String post(String url, String json) throws IOException { RequestBody body = RequestBody.create(JSON, json); Request request = new Request.Builder() .url(url) .post(body) .build(); Response response = client.newCall(request).execute(); return response.body().string(); } //②提交字符串 String postString(String url)throws IOException { FormBody formBody = new FormBody.Builder().add("name", "aaa").add("age", "13").build(); Request request = new Request.Builder() .url(url) .post(formBody) .build(); Response response = client.newCall(request).execute(); headers = response.headers(); return response.body().string(); }}
0 0
- [1]OkHttp介绍之Get、Post方法
- Http之get方法和post方法介绍
- Http之get方法和post方法介绍
- OkHttp(1):GET和POST
- okHttp post&get请求
- okhttp get post请求
- 简单封装okhttp的get和post方法
- Android okHttp网络请求之Get/Post请求
- Android okHttp网络请求之Get/Post请求
- Android okHttp网络请求之Get/Post请求
- Android的Okhttp框架之post、get用法讲解(落雨敏)
- Android okHttp网络请求之Get/Post请求
- Android okHttp网络请求之Get/Post请求
- OkHttp get post 简单用法
- OkHttp get和post封装
- OkHttp的Get和Post
- okhttp GET请求 post请求
- okhttp get post 使用源代码
- caffe--学习中的一些知识点
- ipython notebook for ubuntu 14.04 安装步骤
- Swift开发:GCDAsyncUdpSocket 通信之UDP广播
- JavaScript菜鸟教程笔记
- rmdir命令
- [1]OkHttp介绍之Get、Post方法
- js url上添加随机数防止缓存
- [示例] -- redis作为消息队列实现代码
- C语言关键字之volatile
- caller和callee的区别
- spyder 下安装scrapy
- jsonp跨域+bootstrap表格-物流信息显示
- 求最大公约数和最小公倍数(java语言)
- Linux访问Win盘