300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用OkHttp发送HTTP请求并显示返回的数据

使用OkHttp发送HTTP请求并显示返回的数据

时间:2022-10-11 10:15:35

相关推荐

使用OkHttp发送HTTP请求并显示返回的数据

准备工作:

编辑 app/build.gradle文件,在dependencies闭包中添加以下内容:

implementation 'com.squareup.okhttp3:okhttp:4.0.1'

添加上述依赖会自动下载两个库,一个是OkHttp库,一个是Okio库,后者是前者的通信基础。其中4.0.1是我写这篇博客时的最新版本,你可以访问OkHttp的项目主页来查看当前的最新版本是多少,OkHttp的项目主页地址如下:

OkHttp的项目主页

添加网络权限,在AndroidManifest.xml文件中加入以下代码:

<uses-permission android:name="android.permission.INTERNET" />

我们先来看下程序运行的效果图:

这里就是点击按钮,发送请求,然后显示返回的数据。

MainActivity的xml布局代码如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><Buttonandroid:id="@+id/btn_send_request"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发送请求"android:textSize="20sp" /><ScrollViewandroid:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/response_text"android:layout_width="match_parent"android:layout_height="wrap_content" /></ScrollView></LinearLayout>

MainActivity的java代码如下:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {private Button mBtn_sendRequest;private TextView mTv_responseText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mBtn_sendRequest = findViewById(R.id.btn_send_request);mTv_responseText = findViewById(R.id.response_text);mBtn_sendRequest.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btn_send_request:// 发送网络请求并读取的方法sendRequestWithOkHttp();break;default:break;}}private void sendRequestWithOkHttp() {new Thread(new Runnable() {@Overridepublic void run() {try {// 创建一个OkHttpClient的实例OkHttpClient client = new OkHttpClient();// 如果要发送一条HTTP请求,就需要创建一个Request对象// 可在最终的build()方法之前连缀很多其他方法来丰富这个Request对象Request request = new Request.Builder().url("").build();// 调用OkHttpClient的newCall()方法来创建一个Call对象,并调用execute()方法来发送请求并获取服务器的返回数据Response response = client.newCall(request).execute();// 其中Response对象就是服务器返回的数据,将数据转换成字符串String responseData = response.body().string();// 将获取到的字符串传入showResponse()方法中进行UI显示showResponse(responseData);} catch (IOException e) {e.printStackTrace();}}}).start();}// 返回主线程并执行更改UI操作private void showResponse(final String string) {runOnUiThread(new Runnable() {@Overridepublic void run() {//这里进行UI操作mTv_responseText.setText(string);}});}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。