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

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

相关推荐
雨白4 小时前
Jetpack Compose Navigation 2.x 详解
android·android jetpack
Android系统攻城狮7 小时前
Android内核进阶之获取DMA地址snd_pcm_sgbuf_get_addr:用法实例(九十一)
android·pcm·android内核·音频进阶·pcm硬件参数
清空mega7 小时前
Android Studio移动应用基础教程(前言)
android·ide·android studio
2501_937145417 小时前
2025IPTV 源码优化版实测:双架构兼容 + 可视化运维
android·源码·源代码管理·机顶盒
zhoutanooi9 小时前
安卓bp文件编译学习
android·学习
aramae10 小时前
MySQL数据库入门指南
android·数据库·经验分享·笔记·mysql
百锦再10 小时前
选择Rust的理由:从内存管理到抛弃抽象
android·java·开发语言·后端·python·rust·go
whatever who cares11 小时前
在Java/Android中,List的属性和方法
android·java
油炸小波13 小时前
09-微服务原理篇(XXLJOB-幂等-MySQL)
android·mysql·微服务
果子没有六分钟13 小时前
setprop debug.hwui.profile visual_bars有什么作用
android