为什么 R HTTR 内容声明没有生成预期的请求正文?
Why is R HTTR content statement not producing the expected request body?
我正在使用 R 调用 Cybersource API。当我使用 GET 请求时,我获得了 200 的成功响应。当我读取响应的主体而不是取回 csv 数据时,我得到了 csv 文件路径的路径。我想知道我做错了什么。
content(request)
给出
"/space/download_reports/output/dailyreports/reports/2018/10/27/testrest/TRRReport-7931d82d-cf4a-71fa-e053-a2588e0ab27a.csv"
content(request)
的结果应该是数据而不是文件路径。
这是代码
library('httr')
merchant<-'testrest'
vcdate<-'Wed, 29 May 2019 10:09:48 GMT'
ho<-'apitest.cybersource.com'
URL<-'https://apitest.cybersource.com/reporting/v3/report-downloads?organizationId=testrest&reportDate=2018-10-27&reportName=TRRReport'
sign<-'keyid="08c94330-f618-42a3-b09d-e1e43be5efda", algorithm="HmacSHA256", headers="host (request-target) v-c-merchant-id", signature="7cr6mZMa1oENhJ5NclGsprmQxwGlo1j3VjqAR6xngxk="'
req<-GET(URL, add_headers(.headers=c('v-c-merchant-id'=merchant, 'v-c-date'=vcdate, 'Host'=ho, 'Signature'=sign)))
content(req)
这是 Cybersource 测试 api,您可以在其中验证生成的数据。
https://developer.cybersource.com/api/reference/api-reference.html
我正在尝试在报告选项卡下下载报告
老实说,我不太确定这里发生了什么,但我确实认为我能够让一些东西发挥作用。
API 似乎喜欢 return application/hal+json
格式的数据,这不是 httr
通常要求的格式。你可以说你会接受 accept("*")
的任何东西所以你可以用
来完成你的请求
req <- GET(URL, add_headers('v-c-merchant-id'=merchant,
'v-c-date'=vcdate,
'Host'=ho,
'Signature'=sign), accept("*"))
现在我们实际上得到了我们想要的数据,但是httr
不知道如何自动解析它。所以我们需要自己解析。这似乎可以解决问题
readr::read_csv(rawToChar(content(req)), skip=1)
似乎有一个 header 行我们用 skip=
跳过,然后我们用 readr::read_csv
.
将其余行解析为 CSV 文件
我正在使用 R 调用 Cybersource API。当我使用 GET 请求时,我获得了 200 的成功响应。当我读取响应的主体而不是取回 csv 数据时,我得到了 csv 文件路径的路径。我想知道我做错了什么。
content(request)
给出
"/space/download_reports/output/dailyreports/reports/2018/10/27/testrest/TRRReport-7931d82d-cf4a-71fa-e053-a2588e0ab27a.csv"
content(request)
的结果应该是数据而不是文件路径。
这是代码
library('httr')
merchant<-'testrest'
vcdate<-'Wed, 29 May 2019 10:09:48 GMT'
ho<-'apitest.cybersource.com'
URL<-'https://apitest.cybersource.com/reporting/v3/report-downloads?organizationId=testrest&reportDate=2018-10-27&reportName=TRRReport'
sign<-'keyid="08c94330-f618-42a3-b09d-e1e43be5efda", algorithm="HmacSHA256", headers="host (request-target) v-c-merchant-id", signature="7cr6mZMa1oENhJ5NclGsprmQxwGlo1j3VjqAR6xngxk="'
req<-GET(URL, add_headers(.headers=c('v-c-merchant-id'=merchant, 'v-c-date'=vcdate, 'Host'=ho, 'Signature'=sign)))
content(req)
这是 Cybersource 测试 api,您可以在其中验证生成的数据。
https://developer.cybersource.com/api/reference/api-reference.html
我正在尝试在报告选项卡下下载报告
老实说,我不太确定这里发生了什么,但我确实认为我能够让一些东西发挥作用。
API 似乎喜欢 return application/hal+json
格式的数据,这不是 httr
通常要求的格式。你可以说你会接受 accept("*")
的任何东西所以你可以用
req <- GET(URL, add_headers('v-c-merchant-id'=merchant,
'v-c-date'=vcdate,
'Host'=ho,
'Signature'=sign), accept("*"))
现在我们实际上得到了我们想要的数据,但是httr
不知道如何自动解析它。所以我们需要自己解析。这似乎可以解决问题
readr::read_csv(rawToChar(content(req)), skip=1)
似乎有一个 header 行我们用 skip=
跳过,然后我们用 readr::read_csv
.