Adr*_*ian 3 ruby curl rest-client
我有一个cURL,我试图转换成Ruby.
cURL是这样的:
curl -i -k -H "Accept: application/json" -H "Authorization: token" -H "Content-Type: image/jpeg" -H "Content-Length: 44062" --data-binary "gullfoss.jpg" http://www.someurl.com/objects
Run Code Online (Sandbox Code Playgroud)
我的Ruby代码是这样的:
image = File.read('uploads/images/gullfoss.jpg')
result = RestClient.post('http://www.someurl.com/objects',image,{'upload' => image, 'Accept' => 'application/json', 'Authorization' => 'token', 'Content-Type' => 'image/jpeg', 'Content-Length' => '44062'})
Run Code Online (Sandbox Code Playgroud)
Ruby代码给了我一个400 Bad Request.授权或其他标题不是问题.我认为问题在于将--data-binary转换为Ruby.
任何帮助赞赏.
谢谢,阿德里安
有一些事情可能会导致问题.
File对象RestClient,所以使用File.open; 它返回一个文件对象.RestClient.post带有参数的签名url, payload, headers={},您的请求应采用以下两种形式之一:端点是否期望命名参数?如果是,请使用以下内容:
技术1:有效负载包括名为"upload"的字段或参数,并将值设置为图像对象
result = RestClient.post(
'http://www.someurl.com/objects',
{ 'upload' => image },
'Accept' => 'application/json',
'Authorization' => 'token',
'Content-Type' => 'image/jpeg',
)
Run Code Online (Sandbox Code Playgroud)
端点是否期望进行简单的文件上传?如果是,那么使用:
技术2:图像文件对象作为唯一有效载荷发送
result = RestClient.post(
'http://www.someurl.com/objects',
image,
'Accept' => 'application/json',
'Authorization' => 'token',
'Content-Type' => 'image/jpeg',
)
Run Code Online (Sandbox Code Playgroud)
请注意,我没有包含'Content-Length'标题; 使用时通常不需RestClient要这样做,因为它在处理文件时会为您插入.
还有另一种发送有效载荷的方法,这里有RestClient解释.
我也是新手,RestClient如果我错了,在这种情况下不要太苛刻; 我会立即纠正我的任何误解.希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
7455 次 |
| 最近记录: |