【问题标题】:Post raw json in body retrofit2在 body retrofit2 中发布原始 json
【发布时间】:2016-08-05 11:11:48
【问题描述】:

我想要这样的 json 请求

{“jsonrpc”:“2.0”,“方法”:“testApi”,“参数”:{ “消息”:“ABC” } , "id": 1}

我读过帖子:

How to POST raw whole JSON in the body of a Retrofit request?

但我在我的 retrofit2 包中找不到类 TypedInput、TypedByteArray、TypedString。在哪里?

【问题讨论】:

    标签: android retrofit2


    【解决方案1】:

    POST 数据到服务器需要后端程序,它将您的数据发布到服务器中的数据库.....

    Retrofit Post 需要 RESTAPI 和 POJO 类 ....

    API 接口

    public interface Api {
        @POST("/upload/{new}.json")
        Call<User> setData(@Path("new") String s1, @Body User user);
    }
    

    改造对象

    Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl("here-your-url")
                    .addConverterFactory(GsonConverterFactory.create()) 
                    .build(); 
    

    API 对象

    Api api = retrofit.create(Api.class);
    

    改造电话

    Call<User> call = api.setData("mahesh", new User("mahesh", "delhi"));
        call.enqueue(new Callback<User>() {
            @Override
            public void onResponse(Call<User> call, Response<User> response) {
                t1.setText("Success");
            }
    
            @Override
            public void onFailure(Call<User> call, Throwable t) {
                Log.d("sam", "fail");
                t1.setText("fail");
            }
        });
    

    POJO 类 //你创建的这个类只是把你的 json 数据放入这个POJOConvertion

    public class User {
    
        String name;
        String address;
    
        public User(String name, String address) {
            this.address = address;
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    

    享受编码。

    如果您想要任何改造练习,请使用此 Retrofit + Firebase

    【讨论】:

      【解决方案2】:

      要在Retrofit 中发布一个主体,您需要创建一个表示该主体的对象,一个包含String jsonrpcString method 等的类。然后,将此对象传递给您在服务接口中定义的方法并且有一个带有@Body 注释的参数。

      这是一个 POST 正文对象的示例:

      public class PostBody{
      
         String jsonprc;
         String method;
         Param param;
      
         public PostBody(...){
              //IMPLEMENT THIS
         }
      
         ...
      
         class Param{
             //IMPLEMENT THIS
         }
      
      }
      

      【讨论】:

      • 我如何将 params json 数组(来自我的示例)表示为类字段?
      • 如果该对象在除该主体之外的任何地方都不需要,则为其创建静态内部类。
      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      相关资源
      最近更新 更多