android - Retrofit:是否可以传递 bean 并获得表单编码?

标签 android rest retrofit

我想发送一个 POST 请求,其内容如下:

api=1&os=android&appVersion=12345

是否可以有一个仅包含该变量的 POJO 并将其传递给

@FormUrlEncoded
@POST("/sendData")
void sendData(@FieldMap MyPojo myPojo, Callback<MyResponse> callback);

使用FieldMap不起作用,还有其他方法吗?

最佳答案

不幸的是,这不能开箱即用。您有两个选择:

  • 如果您只有少量 Pojo,您可以定义 MyPojo.toFieldMap() 方法来构建表单值的字段映射并将其传递给您的 sendData( ) 方法。

  • 如果您有大量 Pojo,您可以通过实现 Converter 来编写自定义 FormEncodedConverter项目中的接口(interface)。我认为这需要结合使用注释和反射来发现 MyPojo 类的公共(public)成员。提供自定义转换器的示例 here .

关于android - Retrofit:是否可以传递 bean 并获得表单编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25895162/

相关文章:

android - 在android中使用BaseActivity的不同 Activity 中的通用标题

Android可取消启动画面

java - 我怎样才能启动fragmentactivity?

Java Android 应用程序和 Node.js + Express.js API

android - RxJava onErrorResumeNext 调用 java.io.InterrupedIOException

android - URL 查询字符串 "get=family&code={segment_code}&lang=en"不能有替换 block

java - recyclerview 有滚动结束事件吗?

php - RESTful API 错误处理

rest - 使用-OutFile参数时如何在Invoke-WebRequest/Invoke-RestMethod上获取HTTP状态?

java - 我的 Retrofit call.enqueue() 方法被完全跳​​过,不知道为什么