retrofit做https请求Demo

本文详细介绍如何在Android应用中实现HTTPS请求。通过创建自定义的信任管理器,并利用SSLSocketFactory来处理安全连接,最终借助Retrofit发起GET请求。文中还提供了完整的代码示例。
Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

android开发中,现在业务中用https的请求用的越来越多了,如果不了解https的请先看https请求的原理,现在android用的比较多的网络请求库就是retrofit了,在这里不主要介绍retrofit。如果要retrofit来做https请求,实际上retrofit是对okHttp的一个封装,那我们只需要修改okHttp就好了,在这里用spring boot做了一个简单的https请求的服务端,返回的页面如下

那我们就去请求这个页面上的数据,我这里写的是get请求,服务端的代码会在后面链接中,这里主要说明的是android端的代码,首先在app下面的build.gradle添加retrofit的依赖,

'com.squareup.retrofit2:retrofit:2.4.0'
'com.squareup.retrofit2:converter-scalars:2.4.0'

然后我们创建https请求中要用到的证书管理类x509trustmanager 

public class SSLTrustAllManager implements X509TrustManager {
    @Override
    public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

    }

    @Override
    public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return new X509Certificate[0];
    }
}

然后再去获取要用的SSLScoketFactory,这个主要是扩展Socket并提供使用SSL或TLS协议的安全套接字,实现https请求的

public class SSLSocketClient {
    //获取这个SSLSocketFactory
    public static SSLSocketFactory getSSLSocketFactory() {
        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, getTrustManager(), new SecureRandom());
            return sslContext.getSocketFactory();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    //获取TrustManager
    public static TrustManager[] getTrustManager() {
        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) {
            }

            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) {
            }

            @Override
            public X509Certificate[] getAcceptedIssuers() {
                return new X509Certificate[]{};
            }
        }};
        return trustAllCerts;
    }

    //获取HostnameVerifier
    public static HostnameVerifier getHostnameVerifier() {
        HostnameVerifier hostnameVerifier = new HostnameVerifier() {
            @Override
            public boolean verify(String s, SSLSession sslSession) {
                return true;
            }
        };
        return hostnameVerifier;
    }
}

最后我们在MainActivity中实现我们的网络请求,我们的Https请求到此结束。

public class MainActivity extends AppCompatActivity {

    private TextView tv_test;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_test = findViewById(R.id.tv_test);
        initRetrofit();
    }

    private void initRetrofit() {
        Retrofit.Builder builder = new Retrofit.Builder();
        builder.baseUrl("https://192.168.144.169:8443")
                .addConverterFactory(ScalarsConverterFactory.create())
                .client(OkHttpUtils.getOkHttpClient().getBuild())
                .build().create(APIService.class).getUsers().enqueue(new Callback<String>() {
            @Override
            public void onResponse(Call<String> call, Response<String> response) {
                tv_test.setText(response.body());
            }

            @Override
            public void onFailure(Call<String> call, Throwable t) {
                tv_test.setText(t.getLocalizedMessage());
            }
        });
    }

    public interface APIService {
        @GET("/")
        Call<String> getUsers();
    }
}

最后运行的显示我也贴一下图

这里贴出基于spring boot的这个https请求的服务端代码:点击打开链接

这里是android代码:点击打开链接

如有有问题请留言。欢迎交流。

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值