当前位置: 首页 > wzjs >正文

南宁网站建设策划方案做交互设计的网站

南宁网站建设策划方案,做交互设计的网站,定制企业网站开发公司,装修网站平台有哪些去年接手pad端开发时曾问过其它组的老安卓一个问题,我们的安卓项目本地开发时能否调用本地接口,回答是否定的。也许是由于通用底座加入的限制,也许是因为太忙了,不想给我解释繁琐的解决方案。 那么在个人PC上玩耍总是能够调用本地…

去年接手pad端开发时曾问过其它组的老安卓一个问题,我们的安卓项目本地开发时能否调用本地接口,回答是否定的。也许是由于通用底座加入的限制,也许是因为太忙了,不想给我解释繁琐的解决方案。
那么在个人PC上玩耍总是能够调用本地接口的吧?同时考虑到先前做vue项目时能够通过修改前端的代理配置决定线上或线下接口,于是以安卓调用本地接口引出base_url的配置思路

单纯访问本地后端

开启明文通信

res/xml/network_security_config.xml 中允许明文通信:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config><domain-config cleartextTrafficPermitted="true"><domain includeSubdomains="true">10.0.2.2</domain></domain-config>
</network-security-config>

在 AndroidManifest.xml 中引用该配置:

<applicationandroid:networkSecurityConfig="@xml/network_security_config"... >...
</application>

使用OkHttp定义请求

引入okhttp以及gson依赖(如果已有则不需要处理)

dependencies {implementation 'com.squareup.okhttp3:okhttp:4.9.0'implementation 'com.google.code.gson:gson:2.8.9'
}

定义PublicRepository管理请求调用处, getUserList用于获取用户列表信息,返回调用的callback,由调用处进行回调的解析

import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;/*** @author PineTree* @description: TODO* @date 2025/3/15 14:25*/
public class PublicRepository {private static volatile PublicRepository instance;private PublicRepository() {}public static PublicRepository getInstance() {if (instance == null) {synchronized (PublicRepository.class) {if (instance == null) {instance = new PublicRepository();}}}return instance;}public void getUserList(Callback callback) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url("http://10.0.2.2:8888/user/list").build();client.newCall(request).enqueue(callback);}
}

调用请求验证

PublicRepository.getInstance().getUserList(new Callback() {@Overridepublic void onFailure(@NotNull Call call, @NotNull IOException e) {String hehe = "111";}@Overridepublic void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {if (response.isSuccessful() && ObjectUtils.isNotEmpty(response.body())) {Gson gson = new Gson();List<UserVO> userVOS = gson.fromJson(response.body().string(), new TypeToken<List<UserVO>>() {}.getType());System.out.println("response.body() = " + userVOS);}}
});

在这里插入图片描述

加入base_url管理

考虑到每个请求都将IP、端口号等这些随环境变化的动态参数都写在url显得不优雅,于是引入了base_url

定义base_url

在模块的build.gradle中添加构建配置信息,默认为debug

    defaultConfig {buildConfigField "String", "APP_ENV", "\"${project.hasProperty('APP_ENV') ? project.property('APP_ENV') : 'debug'}\""}

如果com.android.tools.build:gradle:为8+,还需要添加android.buildFeatures.buildConfig设置为true

    buildFeatures {viewBinding truebuildConfig true}

新建url管理类

新建类UrlManage,在getBaseUrl方法中获取构建信息参数BuildConfig.APP_ENV,进而决定返回哪个环境的url(真实项目一般采用类似思路获取需要路由的网关)

package com.example.myapplication1_java.util;import com.example.myapplication1_java.BuildConfig;
import com.example.myapplication1_java.repository.PublicRepository;/*** @author PineTree* @description: url管理* @date 2025/3/16 19:45*/
public class UrlManage {private static volatile UrlManage instance;private UrlManage() {}public static UrlManage getInstance() {if (instance == null) {synchronized (PublicRepository.class) {if (instance == null) {instance = new UrlManage();}}}return instance;}public String getBaseUrl() {String appEnv = BuildConfig.APP_ENV;String baseUrl = "";switch (appEnv) {case "debug":baseUrl = "http://10.0.2.2:8888/";break;case "dev":baseUrl = "http://dev:8888/";break;case "sit":baseUrl = "http://sit:8888/";break;case "uat":baseUrl = "http://uat:8888/";break;}return baseUrl;}}

调整OkHttp定义请求

import com.example.myapplication1_java.util.UrlManage;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;/*** @author PineTree* @description: TODO* @date 2025/3/15 14:25*/
public class PublicRepository {...public void getUserList(Callback callback) {OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(UrlManage.getInstance().getBaseUrl() + "user/list").build();client.newCall(request).enqueue(callback);}
}

验证默认base_url生效

在这里插入图片描述

验证修改base_url生效

修改APP_ENV为uat,验证base_url切换生效,在控制台执行下面指令

# 切换到模块目录
cd app
# clean旧的构建
gradle clean
# 生成 debug APK 设置APP_ENV为uat
gradle assembleDebug -PAPP_ENV=uat 
# 上传APK
adb install -r build/outputs/apk/debug/app-debug.apk
# 启动应用
adb shell am start -n com.example.myapplication1_java/.MainActivity 

在这里插入图片描述
由于本地并没有uat环境接口,解析不了uat请求会报错
在这里插入图片描述

总结

通过以上的配置,就能访问本地测试,并进行base_url的统一管理了,该博客适用于个人demo验证,仅供参考。
代码见https://gitee.com/pinetree-cpu/android_demo_test


文章转载自:

http://Wcl2AYYf.btgxf.cn
http://RXPMT9Iv.btgxf.cn
http://ifBpbeYQ.btgxf.cn
http://IZuJRQHW.btgxf.cn
http://8pRy0kCw.btgxf.cn
http://xTKQB6ZR.btgxf.cn
http://lBTCWnth.btgxf.cn
http://wU6L3i3C.btgxf.cn
http://OjQCgBEK.btgxf.cn
http://V3yXrjWD.btgxf.cn
http://2zE08Q6u.btgxf.cn
http://IR0Vmrno.btgxf.cn
http://T6L6DAKE.btgxf.cn
http://9pO5r7UL.btgxf.cn
http://yj6soUEH.btgxf.cn
http://zmQjcCUV.btgxf.cn
http://ijGZJpnp.btgxf.cn
http://ug6ta6Fw.btgxf.cn
http://CH9AmQ7J.btgxf.cn
http://YR20d90l.btgxf.cn
http://WH3bwk0e.btgxf.cn
http://yQQTj4OD.btgxf.cn
http://g09FfVDx.btgxf.cn
http://uUtSsvjc.btgxf.cn
http://LtTGudUd.btgxf.cn
http://svivpSRu.btgxf.cn
http://AGffsiAR.btgxf.cn
http://C4qT9mf3.btgxf.cn
http://u9KhBRhK.btgxf.cn
http://s0mP7Y3X.btgxf.cn
http://www.dtcms.com/wzjs/618141.html

相关文章:

  • 什么网站的易用性汕头建站程序
  • 南宁网站建设蓝云手机网站图片轮播
  • 湛江专业的建站托管上市公司做网站有什么用
  • 个人网站开发赚钱方向wordpress在线咨询
  • 顶呱呱集团 网站建设微网站的好处
  • 中国有多少网站有多少域名新网站建设银行提升转账额度
  • 冀州网站建设linux主机上传网站
  • 嘉兴seo网站建设网站网站开发的公司电话
  • 太原网站建设策划中卫平面设计师招聘
  • 郑州高端定制网站社交系统开发
  • 福州seo推广seo点击软件排名优化
  • 西安公司的网站建设东莞常平镇邮政编码
  • 100m网站注册wordpress设置固定链接后
  • 郑州模板网站设计哪家便宜wordpress界面菜单怎么弄
  • 东莞网络营销型网站做违法网站的后果
  • 垄断了网站建设wordpress官网上的主题收费吗
  • 招聘网站开发计划书百度知道官网手机版
  • 台州网站推广福泉网站制作
  • 网站制作需要多少钱品牌wordpress外观插件
  • 遂昌建设局网站上海网络公司网站
  • 项目网络图经常被称为做seo要明白网站内容
  • 做抽纸行业网站亚马逊雨林的动物
  • 专业平台建设网站关了吗做网站需要展示工厂么?
  • 陕西公路工程建设有限公司网站外发加工平台
  • 太原做手机网站设计网页设计与制作学什么
  • 2017做哪些网站致富中国网络安全公司排名
  • 做网站样品图片怎么拍照网站建设期末题答案
  • 网站建设时间进度表模板wordpress 分类目录 页面
  • 公司外贸网站建设房地产公司排名前十
  • 网站推广计划至少应包括wordpress woo theme