Android开发真机与本地服务器调试

博客指出手机与电脑在同一网段,但服务端与手机端无法进行接口通信的问题。经定位,是IP固有化和Retrofit对象单例模式创建,使baseUrl请求路径不能动态变更。解决办法是动态变更IP地址并据此实例化对象,适用于APP开发与服务端交互等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

手机与电脑处在同一网段,但是服务端与手机端不能进行接口通信。

在这里插入图片描述

解决方式:

一、问题定位:

IP的固有化,Retrofit对象的单例模式创建。导致接口引用的都是同一个生成的单列对象,baseUrl的请求路径不能动态变更。

在这里插入图片描述

    public static String BASEURL = AppConstant.BASE_URL;
    private static Retrofit retrofit;
    private static RetrofitManager retrofitManager;

    //提供共有的方法供外界访问
    public static RetrofitManager newInstance() {
        if (retrofitManager == null) {
            synchronized (RetrofitManager.class) {
                retrofitManager = new RetrofitManager();
            }
        }
        return retrofitManager;
    }
	//构造方法私有化
    private RetrofitManager() {
        retrofit = getRetrofit();
    }
	//构建Ok请求
    private OkHttpClient getOkHttpClient() {
        return new OkHttpClient.Builder()
                .connectTimeout(5000, TimeUnit.MILLISECONDS)
                .build();
    }

    //构建Retrofit
    private Retrofit getRetrofit() {
        return new Retrofit.Builder()
                .baseUrl(BASEURL)
                .client(getOkHttpClient())
                .addConverterFactory(GsonConverterFactory.create())
//                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
    }

二、 解决方式

将ip地址动态变更,根据动态生成的IP地址来实例化对象

在这里插入图片描述

	//构造方法
    public RetrofitManager() {
        retrofit = getRetrofit();
    }

使用场景

对于APP开发中和服务端接口交互,实现数据的持久化操作。APP开发中服务器调试的一些需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值