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();
    }
}

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

相关推荐
人生游戏牛马NPC1号5 分钟前
学习 Flutter (一)
android·学习·flutter
fundroid1 小时前
Swift 进军 Android,Kotlin 该如何应对?
android·ios
前端世界1 小时前
鸿蒙系统安全机制全解:安全启动 + 沙箱 + 动态权限实战落地指南
android·安全·harmonyos
_一条咸鱼_3 小时前
Vulkan入门教程:源码级解析
android·面试·android jetpack
嘉小华3 小时前
ThreadLocal 详解
android
wkj0014 小时前
php 如何通过mysqli操作数据库?
android·数据库·php
kymjs张涛6 小时前
零一开源|前沿技术周报 #7
android·前端·ios
wuwu_q8 小时前
RK3566/RK3568 Android11 修改selinux模式
android·rk3568
_一条咸鱼_8 小时前
Android Runtime内存共享与访问控制原理剖析(71)
android·面试·android jetpack
嘉小华8 小时前
第三章:焦点分发全链路源码解析
android