不能用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的行!
- Kapt3:java.io.File不能转换为java.lang.String
- TextView在设计预览中显示,但不在实际的Android应用程序中显示
- 如何在MapBox上显示房屋号码?
- 是否可以在Windows 10上安装两个不同版本的Android SDK?
- 我在android工作室与kotlin错误
- 如何以编程方式打开Android棉花糖上的特定应用程序的权限屏幕?
- AsyncTask没有泄漏
- 我想将我的kotlin版本添加到gradel项目中
- 错误':android:transformKotlinClassesWithJillForDebug'。 构建用Kotlin + LibGDX编写的Android应用程序时