一、Okhttp?
Okhttp是目前Android主流的网络请求框架之一。话不多说,我们直接来看Okhttp怎么使用。
首先我们要在项目中添加Okhttp的依赖,找到build.gradle文件
dependencies {
implementation 'com.squareup.okhttp3:okhttp:4.1.1'
}
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文件。
<uses-permission android:name="android.permission.INTERNET"/>
二、发送请求
在这里我是选择的点击一个按钮来发送请求。我们首先需要找到按钮,然后写它的点击事件,把发送请求的代码写到点击事件里。要注意的是这里需要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<array.length();i++){//循环打印
JSONObject obj = array.getJSONObject(i);
String title = obj.getString("title");
Log.d("title:",title);//打印
}
}catch (Exception e){
//Toast.makeText(MainActivity.this, "jj:"+e, Toast.LENGTH_SHORT).show();
Log.d("e",e.toString());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "网络连接失败!", Toast.LENGTH_SHORT).show();
}
});
}
}
}).start();
在这里我们需要将代码放到子线程里,因为这是网络请求,如果放到主线程里网络不好的话会导致整个应用都卡起来,而放到子线程里不会影响主线程及其他线程的运行速度。
如果相加参数需要写一个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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49801.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。