我正在使用以下代码发送包含多个参数类型的后期多重请求:
@Multipart
@POST("**")
fun sendRequest(
@Part("ContactType") contactType: RequestBody? = null,
@Part("Description") description: RequestBody? = null,
@Part("ServiceProviderId") serviceProviderId: RequestBody? = null,
@Part("Title") title: RequestBody? = null,
@Part("Latitude") latitude: RequestBody? = null,
@Part("Mobile") mobile: RequestBody? = null,
@Part("Longitude") longitude: RequestBody? = null,
@Query("MainActivities[]") mainActivities :ArrayList<String>,
@Part("Files") files: List<MultipartBody.Part>
): Observable<SendRequestResponse>
这是我设置值的方法:
val titleBody = createBodyRequestFromString(title.value ?: "")
val latitudeBody = createBodyRequestFromString(lat.value ?: "")
val longitudeBody = createBodyRequestFromString(lng.value ?: "")
val contactTypeBody = createBodyRequestFromString(contactType.value.toString() ?: "")
val serviceProviderIdBody = createBodyRequestFromString(serviceProviderId.value ?: "")
val mobileBody = createBodyRequestFromString(phoneNumber.value ?: "")
val mainActivitiesBody: ArrayList<RequestBody> = ArrayList()
createBodyRequestFromString(mainActivities.value?.get(0)).let { mainActivitiesBody.add(it) }
private fun createBodyRequestFromString(string: String?): RequestBody {
return RequestBody.create("text/plain".toMediaTypeOrNull(), string!!)
}
private fun addFileAsMultipart() {
val imagesParts = ArrayList<MultipartBody.Part>(selectedImages.size)
selectedImages.forEachIndexed { index, file ->
val requestBody = RequestBody.create("image/jpeg".toMediaTypeOrNull(), file)
imagesParts.add(
MultipartBody.Part.createFormData(
"files",
file.name,
requestBody
)
)
}}
它一直在说:
@Part parameters using the MultipartBody.Part must not include a part name in the annotation. (parameter #10)
当我走出文件时,后端无法获取我的RequestBody值。
如何发送包含字符串数组和文件数组的多部分内容?
最佳答案
试试这个tutorial帮助我很多
按照本教程..您必须更改
这条线
@Part("Files") files: List<MultipartBody.Part> //kotlin
@Part("Files) List<MultipartBody.Part> files //java
用这条线
@Part files: List<MultipartBody.Part> //kotlin
@Part List<MultipartBody.Part> files //java
并改变这条线
MultipartBody.Part.createFormData("files",file.name,requestBody)
用这条线
MultipartBody.Part.createFormData("files[]",file.name,requestBody)
我希望它能起作用^ _ ^
关于android - 如何发送包含字符串数组和文件数组的多部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60926818/