答案 0 :(得分:0)
Postman会自动生成一些随机边界文本,在发送请求时会将其添加到正文参数中。您在代码中遗漏了这一点。您可以这样做:
使用服务器将用于拆分参数的随机边界
val BOUNDARY = "AS24adije32MDJHEM9oMaGnKUXtfHq"
val MULTIPART_FORMDATA = "multipart/form-data;boundary=" + BOUNDARY
getBodyContentType函数应返回MULTIPART_FORMDATA
override fun getBodyContentType(): String {
return MULTIPART_FORMDATA
}
在getBody()函数上,将边界添加到params中,如下所示:
override fun getBody(): ByteArray {
val params = HashMap<String, String>()
params.put("profile_id", "1")
params.put("place_name", "La la land")
params.put("place_identifier", "10239jodmda")
val map: List<String> = params.map {
(key, value) -> "--$BOUNDARY\nContent-Disposition: form-data; name=\"$key\"\n\n$value\n"
}
val endResult = "${map.joinToString("")}\n--$BOUNDARY--\n"
return endResult.toByteArray()
}
由于您已经在getBodyContentType()上设置了内容类型,因此您可能不需要getHeaders()上的以下行:
headers.put("Content-Type", "multipart/form-data")
这个SO答案显示了如何在java中做类似的事情:https://stackoverflow.com/a/38238994/3189164
答案 1 :(得分:0)
对我有用的解决方案是删除从标题设置Content-Type的行!