改造2请求体没有json,只是一个普通的形式?

时间:2016-02-18 09:35:31

标签: android json retrofit2

我见过的每个示例和教程都展示了如何将请求体转换为JSON,而这并不是我需要的。

它在我的场景中没有效果,因为我没有与节点或w / e交谈,我会浪费计算。我必须在我的应用程序中转换为JSON,然后在后端从JSON解码,这是期望一个常规表单,我没有理由这样做。

我已经尝试了我能找到的每个教程/示例。

public interface myClient {
    @GET("api/fetch-all")
    Call<List<ServiceGenerator.Data>> data();

    // How am I supposed to do this?
    @POST("api/login")
    Call<ServiceGenerator.Cookie> fetchCookie(@Body String email, String password); 
}

1 个答案:

答案 0 :(得分:1)

我像这样使用它

class User {
    String email;
    String password;

    public User(String email, String password) {
        this.email = email;
        this.password = password;
    }
}

然后就像你说的那样

@FormUrlEncoded
@POST("api/login")
Call<User> fetchCookie(@Field("email") String email, @Field("password") String password);

User user = new User("a@a.com", "1234");
mService.fetchCookie(user.email, user.password)

这样你最终使用FormURLEncoded方法发布。此外,Retrofit还提供了一些方法来覆盖ResponseBodyRequestBody的默认转换器。如文档中所述:

  

改装配置

     

Retrofit是用于转换API接口的类   进入可调用的对象。默认情况下,Retrofit会让你理智   您的平台的默认值,但它允许自定义。

     

CONVERTERS

     

默认情况下,Retrofit只能将HTTP主体反序列化为OkHttp   ResponseBody类型,它只能接受其RequestBody类型   @body。

     

可以添加转换器以支持其他类型。六个兄弟模块   为方便起见,调整流行的序列化库。

     

Gson:com.squareup.retrofit2:converter-gson Jackson:   com.squareup.retrofit2:converter-jackson Moshi:   com.squareup.retrofit2:converter-moshi Protobuf:   com.squareup.retrofit2:converter-protobuf Wire:   com.squareup.retrofit2:converter-wire简单XML:   com.squareup.retrofit2:converter-simplexml标量(基元,盒装,   和字符串):com.squareup.retrofit2:converter-scalars这是一个   使用GsonConverterFactory类生成的示例   GitHubService接口的实现,它使用Gson   反序列化。

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

GitHubService service = retrofit.create(GitHubService.class);
  

CUSTOM CONVERTERS

     

如果您需要与使用内容格式的API进行通信   Retrofit不支持开箱即用(例如YAML,txt,custom   格式)或您希望使用不同的库来实现   现有格式,您可以轻松创建自己的转换器。创建一个   扩展Converter.Factory类并传入实例的类   在构建适配器时。

希望有所帮助