• Retrofit中解决网络请求中post请求中只传递一个String字符串而非Map<String,String>形式的办法


    最近遇到了一个特别奇怪的接口,接口的传值只要传递一个String字符串,而非传统形式中的Map,接口样式如下:

    尝试了很多方法都不行,困扰了我好久,写接口的人也早就离职了,公司里没人能帮我,最后我冥思苦想了一周后,终于解决了这个问题,先说结论:

    结论:Retrofit中可以通过传入RequestBody的方式,自定义post中传递的值,这样不管是String类型,还是Map类型,都可以自定义的去传递了

    下面是问题解决方法:

    1.先编写api

    @POST
    Calltext(@Url String url,@HeaderMap Map headermap,@Body RequestBody body);

    2.编写网络请求数据

    API api = RetrofitManager.getRetrofit().create(API.class);
    Map head = new HashMap<>();//请求头
    head.put("accept", "application/json");
    String updata="这里是需要上传的String字符串";//需要上传的信息
    String url="post请求需要的地址值";//URL地址值
    RequestBody requestBody =RequestBody.create(MediaType.parse("application/x-www-form-urlencoded; charset=utf-8"), updata);
    Call textRetrofit= api.text(url, head, requestBody);
    textRetrofit.enqueue(new Callback() {
                                @Override
                                public void onResponse(Call call, Response response) {
                                    //成功
                                }

                                @Override
                                public void onFailure(Call call, Throwable t) {
            //失败
                                }
                            });

    通过这种方式就可以把String作为Body的值传递给后台,问题解决~

    ps:虽然这种传递方式一般后台都不会这么写,我们完全有权利要求后台去重新接口,但现实工作中总是会遇到各种奇奇怪怪的条件,让我们没办法按照预计的方式去解决。我们是程序员,遇到问题解决问题才是我们应该做的,后台固然可恨,但在解决问题的时候,我们的能力也会不知不觉地提高一些,这一点一滴的积累,慢慢地就会使我们蜕变,从一个初级程序员,向中级程序员迈进~

  • 相关阅读:
    【开源免费】基于SpringBoot+Vue.JS网上购物商城(JAVA毕业设计)
    Android手机或平板设置浏览器的UserAgent
    一个失败架构升级案例
    2022春招大厂-嵌入式开发经典笔试面试题目大整理
    SpringCloudAlibaba-window安装Nocas
    AI工人操作行为流程规范识别算法
    使用 Express 设置 GraphQL
    Tomcat请求处理流程与源码浅析
    阳光能源,创造永远:光模块的未来”:随着大数据、区块链、云计算和5G的发展,光模块成为满足不断增长的数据流量需求的关键技术
    苍穹外卖
  • 原文地址:https://blog.csdn.net/u010802275/article/details/126466193