首页 > 其他分享 >okhttp基础使用(一)

okhttp基础使用(一)

时间:2024-08-05 14:40:31浏览次数:12  
标签:xml binding void 使用 基础 new okhttp import

  • 新建一个安卓项目

  • build.gradle (:app)中添加如下依赖

android {
    android.buildFeatures.viewBinding = true
}

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:3.14.+'
}
  • activity_main.xml编写按钮和文本
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity"
    android:orientation="vertical">

    <Button
        android:id="@+id/btn1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="测试请求"/>

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>
  • 修改MainActivity
package com.example.okhttp;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.example.okhttp.databinding.ActivityMainBinding;
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity {

    ActivityMainBinding binding;

    OkHttpClient okHttpclient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
//        setContentView(R.layout.activity_main);

        okHttpclient = new OkHttpClient.Builder().build();

        binding.btn1.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view) {
                // 执行get请求
                testGet();
            }
        });
    }

    // 发送get请求
    private void testGet(){
        Request request = new Request.Builder().url("http://127.0.0.1:4523/m1/4635458-4285948-default/pet/1").build();

        // 同步请求
        new Thread(new Runnable(){
            @Override
            public void run(){
                try {
                    Response response = okHttpclient.newCall(request).execute();
                    String result = response.body().string();
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            // 响应内容显示到页面
                            binding.textView.setText(result);
                        }
                    });
                } catch (IOException e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

}
  • AndroidManifest.xml中进行网络配置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • src > main > res > xml中新建network_security_config.xml文件

  • 将配置文件加入AndroidManifest.xml

<application
        android:networkSecurityConfig="@xml/network_security_config"
>
  • 启动虚拟环境,启动app,点击按钮测试

标签:xml,binding,void,使用,基础,new,okhttp,import
From: https://www.cnblogs.com/dogleftover/p/18343169

相关文章

  • springboot多数据源整合及使用(一个oracle,两个mysql)
    在开发工作中,会遇到需要使用多个数据源的情况,比如项目一开始只有oracle,后面需要追加两个mysql数据源使用,这时候就需要配置多数据源了.首先,配置文件的编写:版本如下spring:datasource:db1:driver-class-name:com.mysql.cj.jdbc.Driverurl:......
  • QT-开发基础知识-全-
    QT开发基础知识(全)原文:FoundationsofQtDevelopment协议:CCBY-NC-SA4.0一、C++的Qt方式Qt是一个跨平台、图形化的应用开发工具包,使您能够在Windows、MacOSX、Linux和不同品牌的Unix上编译和运行您的应用。Qt的很大一部分致力于为一切事物提供平台中立的接口,从......
  • 重学面向对象-基础篇01类与对象
    类与对象基础概念类:一类事物,比较概括性(动物)对象:类的实例,具体的某样事物(猫)属性:类的成员变量,表示某事物所具有的特征(性别)方法:对象可以做出的一些行为,是语句的集合,为了完成某件事情而存在(抓老鼠)方法定义时编写的参数,我们一般称为形式参数,而调用方法实际传入的参数,我们称为实际......
  • 面向零基础初学者的现代-C---教程-全-
    面向零基础初学者的现代C++教程(全)原文:ModernC++forAbsoluteBeginners协议:CCBY-NC-SA4.0一、介绍亲爱的读者:恭喜你选择学习C++编程语言,感谢你拿起这本书。我叫SlobodanDmitrovi,是一名软件开发人员和技术作家,我将尽我所能向您介绍一个C++的美丽世界。这本书......
  • 【转载】MapStruct使用填坑
    使用MapStruct的时候明明sourcefield不是null,转换完之后就变成null了,结果发现MapStruct生成的Converter是很久以前的,idea里面直接点运行并不会重新生成MapStruct的实现类,所以修改实体类之后一定要mvnclean。和这位仁兄碰到了一样的问题,心有戚戚焉,所以转载mapstruct是一个编译......
  • 新手如何高效学习基础电控电驱课程
    凌鸥学园旨在为电机控制爱好者提供学习交流成长平台,缓解电控行业人才缺口扩大趋势,共同打造繁荣行业生态。我们将全面整合LKSMCU相关资料,包括开发环境、应用笔记、教学视频、学习指导等,并设有专业课程。  通过凌鸥学园的专业体系认证,你将掌握热门且专业的电机控制算法,电机......
  • 40个高阶ChatGPT学术论文指令集(附GPT使用链接)
    ​我精心挑选的40个顶尖ChatGPT学术论文指令集,无疑将成为你撰写论文和开展研究的珍贵资源,极力推荐你珍藏起来!这些建议极具实用价值,能有效提高你的研究工作效率,使得论文撰写过程轻松许多。在开始前,提示词使用建议选择目前最强的模型,不同模型对指令的follow能力有极大的差距,纵......
  • 《Three.JS零基础入门教程》第一篇:搭建开发环境
    本教程由新中地GIS开发高级讲师李俊杰老师出品,由浅入深,循序渐进,深入浅出的分析web3D中的核心概念。网格模型场景相机光影动画模型加载学习Three.js对于GIS开发是有很多帮助的。Three.js是一个基于JavaScript的3D图形库,它可以在网页上创建交互式的3D图形和动画效果。......
  • 政务服务网站应该使用哪种SSL证书?
    政务服务网站在选择SSL证书时,需要综合考虑证书的安全性、合规性以及公信力等多个方面。以下是对政务服务网站常用SSL证书类型的详细分析:一、推荐的SSL证书类型OVSSL证书(组织验证型SSL证书)特点:OV证书在颁发前会对申请组织的身份进行严格验证,包括单位名称、地址、电话号码等......
  • 多坐席智能分配的客服系统(附使用教程)
    ​轮流分配就像是排班表,每个客服都有机会接待客户,这样大家都不会太忙也不会太闲,公平得很。按空闲度分配呢,就是看谁现在手头上的活少,就先让谁接待新客户,这样客户就不用等太久,效率杠杠的。熟客分配,这个好理解,就像老朋友来了,直接找上次聊得来的客服继续聊,这样大家都熟悉,沟通起来也......