package com.zjw.mynetwork3;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
//9.2.2 p319 使用OkHttp
//OkHttp的项目主页:https://github.com/square/okhttp
//将前面HttpURLConnection的使用的布局拷贝一份过来(笔记(7))
/*
OkHttp使用过程GET版
1.添加依赖、上网权限
compile 'com.squareup.okhttp3:okhttp:3.8.1'
<uses-permission android:name="android.permission.INTERNET"/>
会自动下载两个库:OkHttp、Okio,后者是前者的通信基础
2.创建一个OkHttpClient实例
OkHttpClient client=new OkHttpClient();
3.创建一个空的Request对象
Request request=new Request.Builder().build();
4.在build()方法前连缀上方法,丰富这个Request对象
Request request=new Request.Builder()
.url("https://www.baidu.com")//设置目标网络地址
.build();//创建一个Request对象
5.调用OkHttpClient的newCall()方法来创建一个Call对象,调用Call对象的execute()方法发送请求获取服务器返回对象
Response response = client.newCall(request).execute();
6.获取返回数据
String responseData=response.body().string();
*/
/*
OkHttp使用过程POST版
1.添加依赖、上网权限
compile 'com.squareup.okhttp3:okhttp:3.8.1'
<uses-permission android:name="android.permission.INTERNET"/>
会自动下载两个库:OkHttp、Okio,后者是前者的通信基础
2.创建一个OkHttpClient实例
OkHttpClient client=new OkHttpClient();
3.构建出一个RequestBody对象来存放待提交的参数
RequestBody requestBody=new FormBody.Builder()
.add("username","admin")
.add("password","123456")
.build();
4.创建一个空的Request对象
Request request=new Request.Builder().build();
5.在build()方法前连缀上方法,丰富这个Request对象,要调用post()方法,并将RequestBody对象传入
Request request=new Request.Builder()
.url("https://www.baidu.com")//设置目标网络地址
.post(requestBody)
.build();//创建一个Request对象
6.调用OkHttpClient的newCall()方法来创建一个Call对象,调用Call对象的execute()方法发送请求获取服务器返回对象
Response response = client.newCall(request).execute();
7.获取返回数据
String responseData=response.body().string();
*/
public class UseOfOkHttp extends AppCompatActivity {
private Button mBtnSendRequest;
private TextView mTvResponseText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_use_of_ok_http);
//找到控件
mBtnSendRequest = (Button) findViewById(R.id.btn_send_request);
mTvResponseText = (TextView) findViewById(R.id.tv_response_text);
//Button点击事件,发送HTTP请求
mBtnSendRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//用OkHttp发送HTTP请求
sendRequestWithOkHttp();
}
});
}
private void sendRequestWithOkHttp() {
//开启新线程做耗时操作
new Thread(new Runnable() {
@Override
public void run() {
try {
OkHttpClient client = new OkHttpClient();//创建一个OkHttpClient实例
Request request = new Request.Builder()
.url("https://www.baidu.com")//设置目标网络地址
.build();//创建一个Request对象
Response response = client.newCall(request).execute();//发送请求获取服务器返回对象
String responseData=response.body().string();
showResponse(responseData);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
//将数据设置给TextView
private void showResponse(final String s) {
//在UI线程(主线程)更新UI,因为Android不允许在子线程中进行UI操作
runOnUiThread(new Runnable() {
@Override
public void run() {
mTvResponseText.setText(s);
}
});
}
}
转载于:https://my.oschina.net/u/3620480/blog/1488480
本文详细介绍了如何在Android应用中使用OkHttp库进行GET和POST网络请求。包括添加依赖、配置上网权限、创建OkHttpClient实例、构建Request对象、发送请求及处理响应数据等步骤。
1393

被折叠的 条评论
为什么被折叠?



