首页 > 其他分享 >OKHttp的基本又核心的使用,手把手教程

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

时间:2023-11-30 22:31:42浏览次数:45  
标签:教程 String url 手把手 -- URL OKHttp new 小何

真就是手把手教你如何使用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里面添加网络请求权限

<uses-permission android:name="android.permission.INTERNET"/>

step2:新建一个HTTPActivity

public class OKHTTPActivity extends AppCompatActivity {

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

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

<?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等等

/**
 * 最后一个参数是异步操作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里面的代码,按道理应该是固定的格式里面一些东西可以根据实际情况去增删改,核心内容应该不会改变

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

标签:教程,String,url,手把手,--,URL,OKHttp,new,小何
From: https://blog.51cto.com/u_16175630/8634504

相关文章

  • 手把手教会你--办公软件--Word--持续更新
    @目录1.1Word排版基础1保存和命名Ⅰ自动保存2建立标准的编辑环境(1)显示编辑标记(2)打开标尺(3)打开导航窗格3高效的鼠标/键盘手势(1)连续选中内容--shift(2)跳选内容--ctrl(3)矩形选择内容--alt(4)回到文档开头/结尾--Ctrl+Home/End(5)更多的键盘快捷键1.2Word排版1.修改格......
  • Qt应用开发--国产工业开发板全志T113-i的部署教程
    Qt在工业上的使用场景包括工业自动化、嵌入式系统、汽车行业、航空航天、医疗设备、制造业和物联网应用。Qt被用来开发工业设备的用户界面、控制系统、嵌入式应用和其他工业应用,因其跨平台性和丰富的功能而备受青睐。Qt能够为工业领域带来什么好处:-Qt提供了强大的图形引擎,使开发......
  • 本地Linux 服务器实现公网SFTP远程传输文件(小白教程)
    简单几步实现使用SFTP结合cpolar工具实现远程Linux服务器传输文件1.查看局域网IP地址检查Linux局域网IP地址,我们输入:ipaddress然后即可看到设备的局域网IP地址2.局域网测试连接我们打开连接工具,这里使用winSCP连接测试,协议选择SFTP,输入上面查看的ip地址,端口号默认......
  • 无涯教程-Python爬虫 - 处理图像和视频
    Web抓取通常涉及下载,存储和处理Web内容,在本章中了解如何处理从Web下载的内容。无涯教程在抓取过程中获得的网络媒体内容可以是图像,音频和视频文件,以及非网页形式的数据文件。但是,能否信任下载的数据,尤其是将要下载并存储在计算机内存中的数据扩展名?这使得了解将要本地存储的数......
  • Lemonsqueezy教程:Stripe的最好替代品
    Lemonsqueezy优点• 申请门槛低:国内用户也可以申请,不需要公司资质• 支付微信支付和支付宝:详情见这里[1]• 支持试用• 有佣金系统• 有折扣码系统对比支付网关服务名称费率支持的支付方式安全性客户服务和支持PayPay2.9%+0.30美元信用卡、借记卡、银行转账、PayPal余额等金......
  • 无涯教程-Python爬虫 - 数据处理
    在前面的章节中,无涯教程学习了有关通过各种Python模块从网页中提取数据或进行网页抓取的知识。在本章中研究各种技术来处理已抓取的数据。要处理已抓取的数据,必须将数据以特定格式存储在本地计算机上,例如电子表格(CSV),JSON或有时存储在MySQL等数据库中。CSV和JSON数据处理首先......
  • 无涯教程-Python爬虫 - 模块安装
    在本章中,让无涯教程学习可用于Web抓取的各种Python模块。虚拟环境Virtualenv是用于创建隔离的Python环境的工具。借助virtualenv,可以创建一个文件夹,其中包含使用Python项目所需的软件包所需的所有可执行文件。它还允许添加和修改Python模块,而无需访问全局安装。您可以使用以下......
  • 无涯教程-Python爬虫 - 简介
    Web抓取是从Web提取信息的自动过程,本章将为您提供有关Web抓取的深入概念,它与Web抓取的比较以及为什么要选择Web抓取。网页抓取字典中"Scrapping"一词的含义表示可以从网络中获取某些东西,这里出现两个问题:无涯教程可以从网上获得什么以及如何获得它。第一个问题的答案是"数据......
  • 无涯教程-F# - 事件类型
    事件允许类之间相互发送和接收消息,对象通过同步消息传递相互通信。事件类和事件模块Control.Event<'T>类有助于创建可观察的对象或事件。Member说明Publish将观察输出作为一等值发布。Trigger使用给定的参数触发观察。Control.Event模块提供用于管理事件流的功能-Valu......
  • 无涯教程-F# - 模块声明
    F#模块是F#代码构造的组合,如类型,值,函数值和do绑定中的代码,它被实现为仅具有静态成员的公共语言运行时(CLR)类。根据情况,整个文件是否包含在模块中,有两种类型的模块声明-顶级模块声明本地模块声明在顶层模块声明中,整个文件都包含在模块中,在这种情况下,文件中的第一个声明是模块......