OKHttp的简单使用
来源:互联网 发布:枪手步态 知乎 编辑:程序博客网 时间:2024/05/20 05:10
OKHttp是现在比较流行的网络请求框架之一,所以今天我们就来简单介绍一下,
但是想要使用OKHttp,需要添加依赖,
因为是网络请求,所有一定不要忘记在清单文件中添加网络权限,避免不必要的麻烦,
一、利用OKHttp来完成同步的get请求,
// 利用OkHttp完成同步get请求public class MainActivity extends AppCompatActivity {//首先定义OKHttpprivate OkHttpClient client;private String url = "http://www.baidu.com";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//初始化client = new OkHttpClient();new Thread(new Runnable() {//由于OKHttp等同于HttpURLConnection,因此需要在线程中执行@Overridepublic void run() {try { syncGet(); } catch (IOException e) { e.printStackTrace(); } } }).start(); }//利用OKHttp来完成同步的get请求private void syncGet() throws IOException {//创建一个网络请求Request request = new Request.Builder().url(url).build();//同步请求,会返回响应,executeResponse response = client.newCall(request).execute();//如果请求成功后if (response.isSuccessful()) { Looper.prepare();//Looper在线程中,将消息加入到消息队列,打出吐司来测试Toast.makeText(this, response.body().string(), Toast.LENGTH_SHORT).show(); Looper.loop(); } }}
二、利用OKHttp来完成异步的get请求,
//通过OKHttp来进行异步的get请求public class MainActivity extends AppCompatActivity {//定义OkHttpprivate OkHttpClient client;private String url = "http://www.baidu.com";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//初始化client = new OkHttpClient(); asynGet(); }private void asynGet() {//创建一个网络请求Request request = new Request.Builder().url(url).build();//异步请求.CallBack里面封装了线程client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) { }@Overridepublic void onResponse(Response response) throws IOException { Log.d("MainActivity", response.body().string()); } }); }}
三、通过OKHttp来完成get的请求头,
//通过OKHttp来完成get请求头public class MainActivity extends AppCompatActivity {//定义private OkHttpClient client;private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//初始化client = new OkHttpClient();tv = (TextView) this.findViewById(R.id.tv); withHeadGet(); }private void withHeadGet() {//APIKey是在api store中找的,在那里可以找到你需要的,下面的这个星号是代表电话号码, String apiKey = "7ed1315843f4f062bbbcf33d57e3899b"; String headerUrl = "http://apis.baidu.com/apistore/mobilenumber/mobilenumber?phone=151*******";//创建一个请求final Request request = new Request.Builder().url(headerUrl).addHeader("apiKey", apiKey).build();client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) { }@Overridepublic void onResponse(final Response response) throws IOException {tv.post(new Runnable() {@Overridepublic void run() {try {tv.setText(response.body().string()); } catch (IOException e) { e.printStackTrace(); } } }); } }); }}
可以看页面上显示的效果,
四、通过OKHttp来完成post的异步请求,
//通过OKHttp来完成post的异步请求public class MainActivity extends AppCompatActivity {//定义private TextView tv;private OkHttpClient client;private Handler handler = new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(Message msg) {if (msg.what == 1) {tv.setText((String) msg.obj); }return false; } });@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//初始化client = new OkHttpClient();tv = (TextView) findViewById(R.id.tv); postRequest(); }private void postRequest() { String postURl = “你要请求的网址";//post请求需要请求体,根据你请求的网址,来填写请求体FormEncodingBuilder builder = new FormEncodingBuilder(); builder.add("token", ""); builder.add("device_type", "2");//创建请求体RequestBody body = builder.build();//创建请求Request request = new Request.Builder().url(postURl).post(body).build();//发出异步的post请求client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Request request, IOException e) { }@Overridepublic void onResponse(Response response) throws IOException {//通过handler来发送消息Message message = new Message(); message.what = 1; message.obj = response.body().string();handler.sendMessage(message); } }); }}
五、通过OKHttp来完成post的同步请求,
//通过OKHttp来完成post的同步请求public class MainActivity extends AppCompatActivity {//定义private TextView tv;private OkHttpClient client;private Handler handler = new Handler(new Handler.Callback() {@Overridepublic boolean handleMessage(Message msg) {if (msg.what == 1) {tv.setText((String) msg.obj); }return false; } });@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);//初始化client = new OkHttpClient();tv = (TextView) findViewById(R.id.tv);new Thread(new Runnable() {@Overridepublic void run() { postRequest(); } }).start(); }private void postRequest() { String postURl = “你想要请求的网址";//post请求需要请求体,根据你请求的网址,来填写请求体FormEncodingBuilder builder = new FormEncodingBuilder(); builder.add("token", ""); builder.add("device_type", "2");//创建请求体RequestBody body = builder.build();//创建请求Request request = new Request.Builder().url(postURl).post(body).build();//响应Response response = null;try { response = client.newCall(request).execute();//发出同步的post请求if (response.isSuccessful()) {//通过handler来发送消息Message message = new Message(); message.what = 1; message.obj = response.body().string();handler.sendMessage(message); } } catch (IOException e) { e.printStackTrace(); } }}
以上是对OKHttp的简单使用做的介绍,以上代码只作为参考,
本人菜鸟一个,有什么不对的地方希望大家指出评论,大神勿喷,大家一起努力进步!
0 0
- OkHttp的简单使用
- OKHttp的简单使用
- OKHttp的简单使用
- OkHttp的简单使用
- okhttp的简单使用
- OkHttp的简单使用
- OkHttp的简单使用
- OkHttp的简单使用
- OkHttp的简单使用
- OkHttp 的简单使用
- okhttp的简单使用
- Okhttp的简单使用
- OKhttp的简单使用
- 简单的OkHttp使用介绍
- OkHttp框架的简单使用
- OkhttP的简单使用笔记
- Android okHttp的简单使用
- okhttp的简单使用例子
- 常用meta整理
- C语言乘法表
- http、TCP/IP协议与socket之间的区别
- myeclipse
- 单例模式
- OKHttp的简单使用
- Nginx设置禁止通过IP访问服务器并且只能通过指定域名访问
- [渗透]escape函数
- opencv打开摄像头采集和保存
- 34. Search for a Range(二分查找有重复元素数组中的目标数的第一个位置和最后一个位置)
- 歧解名词(个人所感)
- 文章标题
- 【OpenCV入门指南】第五篇 轮廓检测 上
- session cookie