不能用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的行!
- 使用Android NDK处理现有的iOS应用程序
- 将界面传递给Fragment
- Kotlin:如何在android studio中用新片段替换已经打开的片段?
- Android:Kotlin TypeCastException:null不能转换为非nulltypes的kotlin.String
- Kotlin:如何使用List转换:未选中Cast:kotlin.collections.List <Kotlin.Any?>转换为kotlin.colletions.List <Waypoint>
- Unity C#和Layar SDK Java – AndroidJavaException
- Kotlin Android扩展和保留片段
- Facebook信息不显示
- Android kotlin:无法读取类文件