【发布时间】:2018-05-24 17:33:28
【问题描述】:
最近两天我一直在寻找解决方案,这也是我在这里的第一个问题,请耐心等待。
我正在尝试使用上传 qbo api 上传 jpg 图像,但不断收到错误代码 500 并显示消息 Unsupported OperationOperation Cannot consume content type is not supported.
我的要求是:
@client = Signet::OAuth1::Client.new(
:temporary_credential_uri => "https://oauth.intuit.com/oauth/v1/get_request_token",
:authorization_uri => "https://appcenter.intuit.com/Connect/Begin",
:token_credential_uri => "https://oauth.intuit.com/oauth/v1/get_access_token",
:client_credential_key => App.find_by_name('quickbooks').clientid,
:client_credential_secret => App.find_by_name('quickbooks').clientsecret
)
@client.token_credential_key = quickbooks.accesstoken
@client.token_credential_secret = quickbooks.refreshtoken
realmid =quickbooks.uid
url = Rails.env.eql?("development")? "sandbox-quickbooks.api.intuit.com" : "quickbooks.api.intuit.com"
object = {
"AttachableRef": [
{
"EntityRef": {
"type": "Invoice",
"value": "95"
}
}
],
"FileName": params[:file].original_filename,
"ContentType": "image/jpg"
}
original_request = [
'Post',
"https://#{url}/v3/company/#{realmid}/upload",
[
['Content-Type', 'application/json'],
['boundary', '0be01941e049'],
],
[object.to_json]
]
response = @client.fetch_protected_resource(:request => original_request)
得到回应:
<Error code=\"500\"><Message>Unsupported Operation</Message><Detail>Operation Cannot consume content type is not supported.</Detail></Error></Fault></IntuitResponse>"
任何帮助将不胜感激。谢谢
:编辑
使用 quickbook-ruby gem----'github.com/ruckus/quickbooks-ruby#uploading-an-actual-file'
::QB_OAUTH_CONSUMER = OAuth::Consumer.new(OAUTH_CONSUMER_KEY, OAUTH_CONSUMER_SECRET, {
:site => "https://oauth.intuit.com",
:request_token_path => "/oauth/v1/get_request_token",
:authorize_url => "https://appcenter.intuit.com/Connect/Begin",
:access_token_path => "/oauth/v1/get_access_token"
})
meta = Quickbooks::Model::Attachable.new
meta.file_name = "monkey.jpg"
meta.note = "A note"
meta.content_type = "image/jpg"
entity = Quickbooks::Model::BaseReference.new(123, type: 'Transfer')
meta.attachable_ref = Quickbooks::Model::AttachableRef.new(entity)
doc_path = 'Add file path'
upload_service = Quickbooks::Service::Upload.new(:realm_id=> '123XXX', :access_token=> 'QTYXXXXX')
result = upload_service.upload(doc_path, "image/jpeg")
我遇到了一个错误 NoMethodError:“erXXXXXXXXXXXXXXXX6”的未定义方法“post_with_multipart”:字符串
即使我没有在我的代码中使用任何名为 post_with_multipart 的方法,这是我在尝试上传图片时得到的回应 result = upload_service.upload(doc_path, "image/jpeg")
【问题讨论】:
-
你如何在这里得到
params[:file]? -
Params[:file] 是我要上传的图像,我正在使用邮递员的方法,然后从那里附加图像
-
好吧,据我猜测,您正在使用文件字段从前端获取参数 [:file]。所以在这里,当你检查它时,它会显示类似
actiondispatcher的东西,所以基本上它不是要上传的物理文件,你可以说 params[:file] 是字节码或元数据,所以我必须也就是说,在进行 api 调用之前,您必须将此字节码转换为物理文件。可能你明白了,或者让我知道以获得进一步的指导。 -
看看这个github.com/ruckus/quickbooks-ruby#uploading-an-actual-file 因为它发送文件元数据也用api,所以你也必须通过
params[:file]。 -
我已经尝试通过将图像保存到系统并上传或者我将该图像放在公共文件夹中,我假设我在对象和原始文件中使用的 json 语法;_请求发送图像可能不是t 正确
标签: ruby-on-rails json quickbooks intuit-partner-platform intuit