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

问题描述:

我在主体请求中发送参数有问题。对邮差我有成功的请求,但使用排雷我只得到意外的响应代码415错误代码。不能用Volley发送多部分/表格数据

Postman successful request

Volley request

+0

解决方案是否适合您? – spuente

对我有用的解决方案是删除从头设置Content-Type的行!

邮差自动生成发送请求时被添加到所述主体PARAMS一些随机边界的文本。你错过了你的代码。这里是你将如何做到这一点:

使用随机边界服务器将用于分割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() 
} 

Sinc Ë您已经设置上getBodyContentType()的内容类型,你可能需要在getHeaders)以下行(:

headers.put("Content-Type", "multipart/form-data") 

这SO回答显示了如何做同样的事情在Java中:https://*.com/a/38238994/3189164