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

  • 相关阅读:
    专家呼吁:家长应承担起数字时代家庭教育新责任
    [附源码]SSM计算机毕业设计班级风采网站JAVA
    mmpretrain学习笔记
    AI全栈大模型工程师(六)进阶技巧
    idea如何配置或者创建mybatis的xml文件 idea如何配置或者创建mybatis的配置文件
    Java与设备(PLC)通信
    一个人就是一本书
    C# PSO 粒子群优化算法 遗传算法 随机算法 求解复杂方程的最大、最小值
    Spring MVC 八 - 内置过滤器
    LeetCode50天刷题计划(Day 14—— 删除链表的倒数第 N 个结点(12.20-13.00)
  • 原文地址:https://blog.csdn.net/u010802275/article/details/126466193