OKHttp的基本又核心的使用,手把手教程

真就是手把手教你如何使用OKHTTP进行网络请求


先说问题,解疑答惑

**1.什么是URL 什么是URI **

URI:统一资源标识符

URL:统一资源定位符

范围来说 URL<URI URL实际上也是一种资源标识符,只不过长得有点像,用来做区分

2.HTTP和HTTPS有什么区别

没什么区别,可能HTTPS会加密,其他好像没什么区别

3.三次握手TCP/IP协议

这个应该是计算机系的同学们都知道的东西吧,这个是《计算机网络》里面有一节网络请求IP地址一章里面学习的,三次握手保证了客户端和服务器的正确连接

此处应该有图片,但是我没有时间去画了,你们去搜下其他人的吧

有些人说三次握手我总是记不住,那你看看我的总结嫩呢

客户端 -- SYN seq=x --> 服务器

~~贾炬山:喂,我是贾炬山 ~~

客户端 <-- SYN ack=x+1 sep=y -- 服务器

老板:喂,我知道你是贾炬山,我是你老板

客户端 -- ack=y+1 --> 服务器

贾炬山:好的老板,你找我干嘛


来人! 上代码~~~

1.我是用的android studio Dolphin 2021.3.1 patch 1 (海豚android)

eg1:使用HTTP访问百度

setp1:Androidmanifest.xml里面添加网络请求权限

xml 复制代码
<uses-permission android:name="android.permission.INTERNET"/>

step2:新建一个HTTPActivity

java 复制代码
public class OKHTTPActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_okhttpactivity);
    }
}

下面是xml布局,一个很简单webview

xml 复制代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".OKHTTPActivity">
   <WebView
       android:id="@+id/webview"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>

新建一个SendUrlTask的异步方式去send一个String,这里可以传各种东西mipmap等等

java 复制代码
/**
 * 最后一个参数是异步操作doinbackground的一个返回值
 * 这个task就是帮我们执行一个url的,所以需要传入一个URL
 */
private class SendUrlTask extends AsyncTask<Void, Void, String> {
    private String mUrl;

    public SendUrlTask(String url) {
        mUrl = url;
    }

    @Override
    protected String doInBackground(Void... voids) {
        /**
         * 这里就是进行网络请求的操作
         */
        try {
            HttpUtil.sendUrl(mUrl);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        mWebView.loadData(s,"text/html;charset=utf-8",null);
    }
}

这里是HttpUtil里面的代码,按道理应该是固定的格式里面一些东西可以根据实际情况去增删改,核心内容应该不会改变

java 复制代码
    /**
     * @param url
     * @return
     * @throws MalformedURLException 能否解析成功的一个异常
     */
    public static String sendUrl(String url) throws IOException {
        URL url1 = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
        connection.setConnectTimeout(5000);
        connection.setRequestMethod("GET");
        InputStream inputStream = connection.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        StringBuffer stringBuffer = new StringBuffer();
        String str = null;
        while ((str = bufferedReader.readLine()) != null) {
            stringBuffer.append(str);
        }
        return stringBuffer.toString();
    }
}

希望兄弟们看完点个赞,复习的时候可以找到

相关推荐
落落落sss2 小时前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
代码敲上天.3 小时前
数据库语句优化
android·数据库·adb
GEEKVIP5 小时前
手机使用技巧:8 个 Android 锁屏移除工具 [解锁 Android]
android·macos·ios·智能手机·电脑·手机·iphone
model20057 小时前
android + tflite 分类APP开发-2
android·分类·tflite
彭于晏6897 小时前
Android广播
android·java·开发语言
与衫8 小时前
掌握嵌套子查询:复杂 SQL 中 * 列的准确表列关系
android·javascript·sql
500了14 小时前
Kotlin基本知识
android·开发语言·kotlin
人工智能的苟富贵15 小时前
Android Debug Bridge(ADB)完全指南
android·adb
小雨cc5566ru20 小时前
uniapp+Android面向网络学习的时间管理工具软件 微信小程序
android·微信小程序·uni-app
bianshaopeng21 小时前
android 原生加载pdf
android·pdf