我试图向API发出请求,发送图像和其他数据,并获得响应。这是我的密码:
file = "assets/images/test.jpg"
conn = Faraday.new(:url => "api_url" ) do |faraday|
faraday.request :multipart
end
payload = { :profile_pic => Faraday::UploadIO.new(file, 'image/jpeg') }
conn.post "/test", payload我的第一个问题是,我总是得到以下错误:
Errno::ENOENT (No such file or directory - assets/images/test.png)我已经试过了所有我能想到的路。应该将图像保存在法拉第要找到的目录中的哪里?
第二个问题是关于回应,我怎样才能得到回应和处理呢?
第三个问题是,我不知道上一次调用的第一个参数的效用是什么:
conn.post "/hello", payload我写过"/hello“,但不知道什么是真正的用法。
最后一个。我可以发送保存在变量中的原始图像,而不是发送路径给Faraday吗?
编辑
现在它起作用了,这是解决方案:请注意,url必须只在.com之前,路径的其余部分必须像下面的示例/v1/search一样在conn.post上进行。c.adapter :net_http也是必需的。消息响应在json变量中得到正确处理。
解决方案:
url = 'http://url.com'
file = Rails.root.to_s + "/app/assets/images/test.jpg"
conn = Faraday.new(:url => url ) do |c|
c.request :multipart
c.adapter :net_http
end
payload = { :image => Faraday::UploadIO.new(file, 'image/jpeg'), :token => token}
response = conn.post '/v1/search', payload
json = JSON.parse response.body发布于 2013-11-21 11:59:41
对于你的第一个问题,你应该试试这个:
file = Rails.root.to_s + "/app/assets/images/test.jpg"对于第三个问题,第一个参数允许您从基"api_url“构造正确的URL。请参阅自述中的示例。
## POST ##
conn.post '/nigiri', { :name => 'Maguro' } # POST "name=maguro" to http://sushi.com/nigirihttps://stackoverflow.com/questions/20117196
复制相似问题