问题描述
当前的任务是通过Scala中的gatling构建一个多部分/混合的POST请求部分Stringbody零件文件。
问题是:在构建请求时,添加了“内容处置:表单数据”,这使请求无效。这是请求的代码:
def upload() = {
val json = JsonClass()
val jsonToString = new Serialization
val result: String = jsonToString.mapToJsonString(json)
exec(http("Title")
.post(API)
.header("Authorization","Bearer ${access_token}")
.header("Content-Type","multipart/mixed")
.bodyPart(StringBodyPart(result))
.bodyPart(RawFileBodyPart("File.csv"))
.check(status.is(201)))
}
这是查尔斯发出的请求的样子:
--1t8F0KWNtHfCs5Vs6v_13YqJorjQxbnn-PX
Content-disposition: form-data
{JsonBodyString}
--1t8F0KWNtHfCs5Vs6v_13YqJorjQxbnn-PX
Content-disposition: form-data; filename="File.csv"
Content-Type: text/csv
File Content is here
--1t8F0KWNtHfCs5Vs6v_13YqJorjQxbnn-PX--
这是请求的外观:
--1t8F0KWNtHfCs5Vs6v_13YqJorjQxbnn-PX
Content-Type: application/json
{JsonBodyString}
--1t8F0KWNtHfCs5Vs6v_13YqJorjQxbnn-PX
Content-Type: text/csv
File Content is here
--1t8F0KWNtHfCs5Vs6v_13YqJorjQxbnn-PX--
因此,我需要发送没有两行“ Content-disposition:”行的请求。
“。bodyPart()”看起来像是自动设置的。
注意: 我在Charles的请求上放置了一个断点,并编辑了请求以删除这2行,并检查它是否通过,并且它确实通过了,所以问题出在这2行。
更新似乎内容配置不是问题。 我设法发送了请求。 唯一缺少的是: “ Content-Type:application / json”行,我可以添加它,但是它还添加了一个“ Charset”,我需要摆脱它。
最终更新我设法通过将内容类型添加到多部分请求的第一部分来发布请求并获得成功,如下所示:
def upload() = {
val json = JsonClass()
val jsonToString = new Serialization
val result: String = jsonToString.mapToJsonString(json)
exec(http("Title")
.post(API)
.header("Authorization","multipart/mixed")
.bodyPart(StringBodyPart(result).header("Content-Type","application/json"))
.bodyPart(RawFileBodyPart("File.csv"))
.check(status.is(201)))
}
致谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)