Android发送Okhttp请求并返回数据
大家好!今天给大家分享的是Android通过okhttp发送请求并返回数据。
一、Okhttp?
Okhttp是目前Android主流的网络请求框架之一。话不多说,我们直接来看Okhttp怎么使用。
首先我们要在项目中添加Okhttp的依赖,找到build.gradle文件
dependencies { implementation 'com.squareup.okhttp3:okhttp:4.1.1'}
完整的build.gradle文件
dependencies { implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' implementation files('libs\\mysql-connector-java-5.1.0-bin.jar') implementation 'com.squareup.okhttp3:okhttp:4.1.1' implementation 'com.alibaba:fastjson:1.2.62' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'}
光添加依赖是不行的,我们还需要给项目添加网络权限,找到AndroidManifest.xml文件。
这样我们就完成了Okhttp的配置。
二、发送请求
在这里我是选择的点击一个按钮来发送请求。我们首先需要找到按钮,然后写它的点击事件,把发送请求的代码写到点击事件里。要注意的是这里需要try catch一下,不然容易有异常。我们方便捕获异常。
houduan = findViewById(R.id.btn_houduan);//找到按钮 houduan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(new Runnable() {//子线程 @Override public void run() { try { OkHttpClient client = new OkHttpClient();//创建Okhttp实例 String url = "https://apis.tianapi.com/nba/index?key=2883d8175524da819017415676fdf911";//请求路径 Request request = new Request.Builder() .url(url) .get() .build();//get请求 Call call = client.newCall(request); Response response = call.execute();//执行 String responseData = response.body().string();//接收数据 JSONArray array = new JSONArray(responseData);//将数据存到数组 for(int i = 0; i
在这里我们需要将代码放到子线程里,因为这是网络请求,如果放到主线程里网络不好的话会导致整个应用都卡起来,而放到子线程里不会影响主线程及其他线程的运行速度。
如果相加参数需要写一个RequestBody,将参数放到里面,然后再放到请求里面传递即可。代码如下:
RequestBody requestBody = requestBuild .add("key",key) .build(); Request request = new Request.Builder() .url(url) .post(key) .build();//post请求
代码写好之后我们运行起来,点击按钮
数据成功打印出来在控制台。我在这只是简单的打印输出了一下,如果想将数据返到页面可以用Bundle。
总结
这就是我今天想要分享的内容,只需要配置好项目写对代码就好,如果觉得有用的话记得留个赞!谢谢观看!
来源地址:https://blog.csdn.net/m0_66403070/article/details/130351632
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341