在Retrofit中将表单数据发送到服务器

2023-12-19

尝试通过 Retrofit 向服务器发送表单数据,但无法向服务器请求。我想发布带有他们的数据的图像数组。

val builder: MultipartBody.Builder = MultipartBody.Builder().setType(MultipartBody.FORM);
builder.addFormDataPart("device_id",device_UDID)
builder.addFormDataPart("device_token",device_token)
builder.addFormDataPart("device_type","android")
builder.addFormDataPart("country_code",Constant.COUNTRY_CODE)
builder.addFormDataPart("email",signUpBean.email)
builder.addFormDataPart("mobile",signUpBean.phoneNumber)
builder.addFormDataPart("first_name",signUpBean.firstName)
builder.addFormDataPart("last_name",signUpBean.lastName)
builder.addFormDataPart("gender",signUpBean.gender)
builder.addFormDataPart("dob",signUpBean.dob)
builder.addFormDataPart("city",signUpBean.city)
builder.addFormDataPart("bike_type_id","1")
builder.addFormDataPart("bike_model",signUpBean.mfg)
builder.addFormDataPart("bike_manufacturer",signUpBean.mfg)
builder.addFormDataPart("reg_year",signUpBean.mfgYear)
builder.addFormDataPart("liecense_plate",signUpBean.licencePlateNo)
builder.addFormDataPart("bank_ac_name",signUpBean.bnkHolderName)
builder.addFormDataPart("bank_ac_number",signUpBean.bnkAccountNumber)
builder.addFormDataPart("bank_name",signUpBean.bnkName)
builder.addFormDataPart("bank_ifsc_code",signUpBean.ifscCode)
builder.addFormDataPart(
    "profile_pic",
    "profile" + ".jpg",
    RequestBody.create(MediaType.parse("image/*"), file_profile!!)
)
builder.addFormDataPart(
    "provider_documents[0][document]",
    "1" + ".jpg",
    RequestBody.create(MediaType.parse("image/*"), file_profile!!)
)
builder.addFormDataPart("provider_documents[0][document_id]","1")
builder.addFormDataPart("provider_documents[0][unique_id]","1")
builder.addFormDataPart("provider_documents[0][exprice_at]","2010-12-12")
val requestBody = builder.build()
observable = apiInterface.signUp2(requestBody)

我尝试了很多解决方案,但无法发布带有数据的图像数组。 当我删除时provider_documents from addFormDataPart效果很好。

// @Multipart
@POST(URLHelper.register)
fun signUp2(@Body builder: RequestBody ): Observable<Registration>

我怎样才能发送Providers_document数组并且它运行良好Postman.

enter image description here post this type of data from retrofit

val partMap = HashMap<String, RequestBody>()
partMap.put("device_id", createPartFromString(device_UDID));
partMap.put("device_token",createPartFromString(device_token))
partMap.put("device_type",createPartFromString("android"))
partMap.put("country_code",createPartFromString(Constant.COUNTRY_CODE))
partMap.put("email",createPartFromString(signUpBean.email))
partMap.put("mobile",createPartFromString(signUpBean.phoneNumber))
partMap.put("first_name",createPartFromString(signUpBean.firstName))
partMap.put("last_name",createPartFromString(signUpBean.lastName))
partMap.put("gender",createPartFromString(signUpBean.gender))
partMap.put("dob",createPartFromString(signUpBean.dob))
partMap.put("city",createPartFromString(signUpBean.city))
partMap.put("bike_type_id",createPartFromString("1"))
partMap.put("bike_model",createPartFromString(signUpBean.mfg))
partMap.put("bike_manufacturer",createPartFromString(signUpBean.mfg))
partMap.put("reg_year",createPartFromString(signUpBean.mfgYear))
partMap.put("liecense_plate",createPartFromString(signUpBean.licencePlateNo))
partMap.put("bank_ac_name",createPartFromString(signUpBean.bnkHolderName))
partMap.put("bank_ac_number",createPartFromString(signUpBean.bnkAccountNumber))
partMap.put("bank_name",createPartFromString(signUpBean.bnkName))
partMap.put("bank_ifsc_code",createPartFromString(signUpBean.ifscCode))

partMap.put(
    "provider_documents["+0+"][document_id]",
    createPartFromString(signUpBean.ifscCode)
)
partMap.put(
    "provider_documents["+0+"][unique_id]",
    createPartFromString(signUpBean.ifscCode)
)
partMap.put(
    "provider_documents["+0+"][exprice_at]",createPartFromString(signUpBean.dob)
)
    
val ImageMap = HashMap<String, MultipartBody.Part>()
ImageMap.put("profile_pic", prepareFilePart("12", file_profile!!));
ImageMap.put("provider_documents["+0+"][document]", prepareFilePart("1", file_profile!!));

请求API

@Multipart
@POST(URLHelper.register)
fun signUp3(
    @PartMap photo: HashMap<String,
    RequestBody>,
    @PartMap ImageMap:HashMap<MultipartBody.Part>,
): Observable<Registration>

虚拟 api 接口。

 public interface ApiInterface {
        @Multipart
        @POST(URLHelper.register)
        Call<ModelProp> signUp2(@Part List<MultipartBody.Part> photos,
                          @PartMap Map<String, RequestBody> map;
    }

现在创建要发布的数据,如下所示。

Map<String, RequestBody> partMap = new HashMap<>();
List<MultipartBody.Part> images = new ArrayList<>();
partMap.put("device_id", createPartFromString(deviceId)); // add data which are common for all images like device_id, device_token, device_type etc.
..
..

for (int i=0; i < upFileList.size(); i++){
   images.add(prepareFilePart("provider_documents["+i+"][document]", imageFile));
   partMap.add("provider_documents["+i+"][expires_at]", createPartFromString(expiry)); // add image specific data. 
 ...
 ..
}
...
..
observable = apiInterface.signUp2(images, partMap).

从字符串创建零件 method

public RequestBody createPartFromString(String string) {
        return RequestBody.create(MultipartBody.FORM, string);
}

准备文件部分 method

private MultipartBody.Part prepareFilePart(String partName, File file){
    RequestBody requestBody = RequestBody.create(MediaType.parse("image/*"), file);

    return MultipartBody.Part.createFormData(partName, file.getName(),requestBody);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Retrofit中将表单数据发送到服务器 的相关文章

  • 覆盖乔达一周的第一天?

    是否有可能覆盖乔达弱的第一天sunday 因为 Joda 使用Monday作为一周的第一天 如果有办法的话 谁能解释一下 我在 SOF 中提到了以下主题 乔达时间 一周的第一天 https stackoverflow com questio
  • 依赖于多个模块的 Gradle Android 单元测试

    我正在开发一个具有多个模块的项目 我们正在为应用程序编写 junit 测试用例 并且我们正在使用以下异常 开始试运行 java lang RuntimeException java lang ClassNotFoundException 下
  • java多线程中“私有最终对象”锁定有什么用?

    java多线程中 私有最终对象 锁定有什么用 据我的理解 我认为要使一个类成为线程安全的 我们应该使用内部锁定 将所有方法标记为同步并使用 this 将它们锁定在对象的监视器上 或者我们可以用方法中的私有最终对象锁替换类的 this 上标记
  • 将对象传递给活动

    我可以在第一个活动中初始化对象并在所有活动中初始化对象吗 public class Calc int x int y public Calc int x int y this x x this y y public int sum retu
  • Android 中 Bitmap 和 Drawable 有什么区别?

    我用谷歌搜索 但找不到任何文章来描述 Android 中 Bitmap 和 Drawable 之间的区别 位图是位图图像的表示 类似于 java awt Image Drawable 是 可以绘制的东西 的抽象 它可能是一个位图 包装为Bi
  • Java中如何将Object[]转换为String[]?

    我有一个关于 Java 的问题 我有一个Object Java默认的 不是用户定义的 我想将它转换为String 谁能帮我 谢谢 这是转换 for int i 0 i lt objectArr length i try strArr i o
  • 使用 Kotlin 查找数组中最后一次出现的字符串

    我有这个数组 cat dog lion tiger dog rabbit 我怎样才能找到position of the first dog 我怎样才能找到position of last dog 我怎样才能扔一个error当我搜索不在数组中
  • 如何在列表视图中选择时启用视频序列自动播放?

    大家好 有人可以与我分享一下我如何编写我的 viewvideo java 类 以便它允许自动播放视频功能 自动排序在列表视图中播放所选视频的任务 从当前位置到最新录制的视频 按顺序直到最新的视频播放完毕 这类似于 YouTube 自动播放功
  • jasper 报告文件中出现错误

    首先 我在 iReport 5 1 0 中创建一个 R D1 jrxml 文件 我执行该报告的 Java 代码如下所示 import java sql Connection import java sql DriverManager imp
  • 如何让 Camel FTP 按需只获取一次

    我对骆驼还很陌生 我一直在尝试让 Camel 根据需要仅通过 FTP 获取单个文件一次 我无法让它发挥作用 这是我尝试过的 让我知道什么是最好的方法以及我的代码有什么问题 1 读取文件后发送一条空消息当收到空消息时 停止路由 from di
  • 如何使用Android Studio录制Android屏幕?

    我已经在 Mac 上的 Applications 文件夹中安装了 Android Studio 我认为 sdk 位于包内容中 但现在我想使用 AShot jar 录制屏幕以获取应用程序的演示视频 我必须放弃SDK的路径 当我给出我认为正确的
  • 使用 Ant 构建 Android 库项目

    我在使用 ant 构建 Android 库项目时遇到问题 当我尝试跑步时ant release 它说Target release does not exist in the project MyProject 然后我假设库可能无法通过发布
  • Android动态功能模块,找不到资源

    当下载的功能模块发布到 Play 商店时 我在启动活动时遇到问题 它总是在下载模块活动中的 setContentView 上崩溃 java lang RuntimeException Unable to start activity Com
  • Java无损保存原始JPEG

    如下所示 我有第一张图像是原始 JPEG 图像 第二张图像用于缓冲图像 然后使用保存http www lac inpe br JIPCookbook 6040 howto compressimages jsp http www lac in
  • 访问手机内部存储以推送 SQLite 数据库文件

    我正在使用 Netbeans 和 java 开发我的 Android 应用程序 当我使用模拟器时 我可以访问文件资源管理器并通过访问以下路径将 SQLite 数据库插入到设备内存中 data data com example helloan
  • getApplicationDocumentsDirectory 在 flutter 桌面(Windows)上不起作用

    如何在 Windows 上的 flutter 桌面上保存和打开文件 getApplicationDocumentsDirectory 不适用于 Windows 应用程序的 flutter 桌面 Future
  • 如何将字符串解析为map

    有一个像A B C D E F这样的字符串 如何将其解析为map 我会使用拆分 String text A B C D E F Map
  • 与手动搜索列表相比,Collections.binarySearch 的性能如何?

    我想知道该使用哪一个 我有一份学生名单 我想用他的名字搜索一个学生 到目前为止 我是通过迭代列表手动完成的 如下所示 for int i 0 i lt list size i Student student list get i if st
  • 更改 ActionMode 溢出图标

    有没有办法更改 ActionMode Overflow 图标而不更改 正常 ActionBar 的图标 我仍然需要弄清楚如何仅更改 ActionMode Actionbar 内部的溢出图标 因为我更改了默认操作栏中的溢出图标 该图标在 Ac
  • 如何将元素添加到通用集合

    我想知道如何将专用对象添加到通用集合中 我正在使用以下代码 Collection

随机推荐

  • 当前位置更改时 MKRoute 更新 MKPolyline Overlay

    我用谷歌搜索了很多 但无法让它发挥作用 在我的 MKMapView 中 我有一个自定义 MKAnnotationView 我可以将其放置在任何地方 还有代表我当前位置的点 我可以 显示方向 计算自定义注释和当前位置之间的 MKDirecti
  • 将 unique_ptr 与 gsl_vector 结合使用

    我最喜欢的方面之一unique ptr是它提供的自动内存管理 我想用unique ptr与 GSL 向量之类的东西 然而 gsl vector有自己的释放内存的机制 gsl vector free 有没有办法强制唯一指针使用GSL的向量释放
  • 为什么 iostream 在 MCU 上占用如此多的闪存空间?

    我使用 GCC 5 2 0 编译 EFM32 MCU 基于 Cortex M 内核 的代码 当我想要时 我注意到代码大小急剧增加 include
  • iOS UrlSession.shared.dataTask 删除 utf-8“+”字符并替换为“”

    我正在使用 x www form endoded 数据创建对 API 的登录调用 我在 Postman 中创建了一个 POST 并收到了 200 回复 我使用Postman的导出功能生成Android的OKHTTP代码和iOS的NSURL代
  • 如何找到堆栈深度?

    我想用单元格替换以下函数调用 参考 从 C 中的任何线程获取调用堆栈 https stackoverflow com questions 1310669 get call stack from any thread within c int
  • 使用 Apache PDFBox 在 PDF 中查找 javascript 代码

    我的目标是提取和处理 PDF 文档可能包含的任何 JavasCript 代码 通过在编辑器中打开 PDF 我可以看到如下对象 402 0 obj lt JavaScript JS n r n Set day 25 r n FormRoute
  • RStudio 服务器上的 R Shiny 开发应用程序启动时 Shiny 崩溃

    我是Shiny的新手 但对R来说并不陌生 由于工作原因 我现在在RStudio服务器中进行R开发 它正在谷歌计算引擎上运行 如果这有什么不同的话 RStudio 服务器运行良好 但 Shiny 出现问题 安装闪亮后 我运行了示例命令 运行示
  • 如何使用内置的“排序”程序同时按两个字段(一个数字,一个字符串)排序?

    我有一个文件 可以说是 bigfile 其中包含以下形式的表格数据 a1 b2 a3 1b1 a2 c3 0 等等 我想在我的 Linux 机器上使用内置的 排序 程序 因此按第四个字段 数字 对该文件进行排序 然后同时按第一个字段排序 我
  • 有没有办法在 HTML 5 Web 音频 API 中检测音频频率?

    我想知道有没有一种方法可以检测 html 5 网络音频中麦克风的音频 我希望制作一个在线吉他调音器 并且我需要从声音输入获得以赫兹为单位的音频 我看到了一些均衡器和滤波器效果 但没有看到任何有关频率识别的内容 编辑 我找到了这个 http
  • 异步套接字连接如何报告错误?

    我正在异步连接套接字 O NONBLOCK connect POSIX 标准指定 在连接套接字后 应通过使套接字的文件描述符准备好写入来发出事件信号 它似乎没有说明异步连接期间的失败 在 Linux 上测试时 似乎有时会出现 POLLOUT
  • 有没有办法在忽略索引的情况下水平连接相同长度的数据帧?

    我有想要水平连接的数据帧 同时忽略索引 我知道对于算术运算 如果使用 numpy 数组 忽略索引可以带来显着的加速 values而不是熊猫系列 是否可以水平连接或合并 pandas 数据帧 同时忽略索引 令我沮丧的是 ignore inde
  • 解析 JSON 并将数据存储在 Python 类中

    这是我的 JSON 数据 id 1 name abc phone 12345 Charecteristics id 1 name Good Looking rating Average id 2 name Smart rating Exce
  • 获取公共 Twitter 个人资料的推文

    我在 Twitter 上有一个用户名列表 其个人资料是公开的 我希望获得他们从形成个人资料之日起发布的 所有推文 我检查了 Twitter4J 示例GitHub https github com yusuke twitter4j blob
  • python cx oracle 需要字符串、unicode 或缓冲区对象

    我试图在 python 中运行以下代码片段来连接到 oracle 但不断遇到以下错误 我尝试了很多组合 但似乎不起作用 我理解这个错误 但不明白这里有什么不兼容 有人遇到过这个问题吗 我如何解决它 文件 第 1 行 在文件 workplac
  • 如何使用 PHP 中的文件系统函数(使用 UTF-8 字符串)?

    我不能使用mkdir创建包含 UTF 8 字符的文件夹 当我在 Windows 资源管理器中浏览此文件夹时 文件夹名称如下所示 Dep sito 我应该怎么办 我用的是php5 Just urlencode http php net url
  • 验证 SOAP 消息

    我无法将任何 SOAP 消息验证为有效的 XML 例如 我从 Wikipedia 上获取了下面的 SOAP 消息 但它失败了Validome验证器 http www validome org xml validate 是验证器错误还是 SO
  • 使用正则表达式的 CakePHP 路由

    我有一个控制器设置来接受两个变量 clients view var1 var2 我想将其显示为 var1 var2 所以我尝试过 Router connect array admin gt false controller gt clien
  • TextureView getBitmap() 忽略 setTransform

    我正在为 CameraPreview 使用纹理视图 由于我使用的显示比例和预览比例之间存在差异textureView setTransform matrix in onSurfaceTextureAvailable 用于缩放预览 当我需要t
  • MySQL 表连接与 AVG()

    我有一个 评级 表 其中包含 作为外键 正在评级的事物的 ID 一个事物可能有多个评级 或者一个值没有评级 我想加入表格来查看所有不同 ID 的不同评级 但现在我在查看没有评级的内容时遇到问题 例如 mysql gt select avg
  • 在Retrofit中将表单数据发送到服务器

    尝试通过 Retrofit 向服务器发送表单数据 但无法向服务器请求 我想发布带有他们的数据的图像数组 val builder MultipartBody Builder MultipartBody Builder setType Mult