Airborne的多部分POST,没有“缺少开始边界”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Airborne的多部分POST,没有“缺少开始边界”相关的知识,希望对你有一定的参考价值。
现在已经使用rest-client一段时间了,但是空降新手。我遇到的障碍是,我似乎无法获得与Airborne合作的文件上传的多部分帖子。我结束了一个错误的请求'缺少开始边界'我的Airborne POST看起来像这样:
before :all do
fyle = File.new("e:/some-file.jpg", 'rb')
body = {:profile => "KonflictME", :file => fyle, :multipart => true}
post "/uploads", body, { :content_type => 'multipart/form-data' }
end
我使用rest-client的工作示例如下所示:
fyle = File.new("e:/some-file.jpg, 'rb')
resp = RestClient.post base_path_api << "uploads",
{:profile => "KonflictME", :file => fyle, :multipart => true},
{:authorization => "myTokenString}
两者之间没有太大的区别,不应该因为Rest-client被用于Airborne的引擎盖下。对于Airborne,base_url和header在config(spec_helper.rb)中设置。
有没有其他人尝试过Airborne的多部分帖子?上传只是我测试套件的一小部分,我有一个非机载解决方案(只是直接使用rest-client进行这些测试),但是希望让其他团队保持简单。
机载框架基于restclient,在源代码中有一行lib / airborne / rest_client_requester.rb:
request_body = request_body.to_json if options[:body].is_a?(Hash)
这意味着您定义的每个物体都将被转移到json中,并作为后续行中的参数:
RestClient.send(method, get_url(url), request_body, headers)
但是在restclient中,无论是想发布json还是上传文件,都不需要考虑body的模式。如果要上传文件,可以将上述代码更改为:
request_body = request_body.to_json if options[:body].is_a?(Hash) && options[:body].to_json["file"].nil?
检查您定义的主体是否包含文件。我在最近的项目中做了这个改变。
希望这会帮助你。
您可以使用RestClient(空中依赖)来使这相当容易。使用哈希正常写出你的参数:
params = {
other_param: 'Some param',
file: File.new(Rails.root.join('spec', 'fixtures', 'sample.csv'), 'r')
}
}
multipart = RestClient::Payload::Multipart.new(params)
post endpoint, params: multipart.read, headers: multipart.headers
以上是关于Airborne的多部分POST,没有“缺少开始边界”的主要内容,如果未能解决你的问题,请参考以下文章
错误的多部分 - 服务器上的 POST(json + 图像)
AFHttpSessionManager - 导致 org.codehaus.jackson.JsonParseException 的多部分 POST
警告:第 0 行未知中的多部分/表单数据 POST 数据中缺少边界