不能用Volley发送多部分/表格数据

我有身体请求发送参数的问题。 对邮差我有成功的请求,但使用排雷我只得到意外的响应代码415错误代码。

邮差成功的要求

排球要求

邮差自动生成一些随机的边界文本,在发送请求时被添加到body params。 你错过了你的代码。 你可以这样做:

使用服务器将用来分割参数的随机边界

val BOUNDARY = "AS24adije32MDJHEM9oMaGnKUXtfHq" val MULTIPART_FORMDATA = "multipart/form-data;boundary=" + BOUNDARY 

getBodyContentType函数应返回该MULTIPART_FORMDATA

 override fun getBodyContentType(): String { return MULTIPART_FORMDATA } 

在getBody()函数中,将边界添加到像这样的参数:

 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") 

这个答案显示了如何在java中做类似的工作: https : //stackoverflow.com/a/38238994/3189164

为我工作的解决方案是删除从头设置Content-Type的行!