Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Curl将HTTP Post发送到易趣交易API_Http_Post_Curl_Ebay Api - Fatal编程技术网

使用Curl将HTTP Post发送到易趣交易API

使用Curl将HTTP Post发送到易趣交易API,http,post,curl,ebay-api,Http,Post,Curl,Ebay Api,我正在尝试执行httppost,从Ebays交易API检索订单数据。正如你可能看到的,我对此有些陌生。我首先使用了他们的API测试工具,并成功地通过生产环境获得了实际订单数据 我复制了HTTP头信息和XML请求部分,将其与我认为可以使其成为有效HTTP Post的内容一起放在一个文件中,然后使用Curl可执行文件——通过批处理文件调用 这不起作用-所以我改为一个更简单的请求-GeteBayTime-并得到了完全相同的结果 我的批处理文件是。。。(全部为一行) 后发文件是 POST / HTTP/

我正在尝试执行
httppost
,从Ebays交易API检索订单数据。正如你可能看到的,我对此有些陌生。我首先使用了他们的API测试工具,并成功地通过生产环境获得了实际订单数据

我复制了HTTP头信息和XML请求部分,将其与我认为可以使其成为有效HTTP Post的内容一起放在一个文件中,然后使用Curl可执行文件——通过批处理文件调用

这不起作用-所以我改为一个更简单的请求-GeteBayTime-并得到了完全相同的结果

我的批处理文件是。。。(全部为一行)

后发文件是

POST / HTTP/1.1
Host: https://api.ebay.com/ws/api.dll
User-Agent: App v1.0
Connection: Keep Alive
Content-Length: 125
Content-Type: text/xml
X-EBAY-API-APP-ID:***-MyReal-APP-ID-here***
X-EBAY-API-VERSION:807  
X-EBAY-API-COMPATIBILITY-LEVEL:707
X-EBAY-API-SITE-ID:0
X-EBAY-API-CALL-NAME:GeteBayTime
X-EBAY-API-REQUEST-ENCODING:XML

<?xml version="1.0" encoding="utf-8"?>
<GeteBayTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">
</GeteBayTimeRequest>
POST/HTTP/1.1
主持人:https://api.ebay.com/ws/api.dll
用户代理:应用程序v1.0
连接:保持活力
内容长度:125
内容类型:text/xml
X-EBAY-API-APP-ID:**-此处为MyReal应用程序ID***
X-EBAY-API-VERSION:807
X-EBAY-API-COMPATIBILITY-LEVEL:707
X-EBAY-API-SITE-ID:0
X-EBAY-API-CALL-NAME:GeteBayTime
X-EBAY-API-REQUEST-ENCODING:XML
结果(in out.xml)是


-
2013-02-04 02:56:43故障-
不支持的API调用。API调用
“GeteBayOfficialTime”无效或在此版本中不受支持。
2错误
请求错误15743293

只有请求主体必须在数据中-

<?xml version="1.0" encoding="utf-8"?>
<GeteBayTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">
</GeteBayTimeRequest>

我有解决方案——我花了一些时间来找到正确的方法:

Curl -X POST -H "Content-type: text/xml" -H "X-EBAY-API-COMPATIBILITY-LEVEL:911" -H "X-EBAY-API-SITEID:3" -H "X-EBAY-API-CALL-NAME:GeteBayOfficialTime" -d @postfile.txt https://api.ebay.com/ws/api.dll
Postfile:

<?xml version="1.0" encoding="utf-8"?>
<GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">
    <RequesterCredentials>
        <eBayAuthToken>Your Token</eBayAuthToken>
    </RequesterCredentials>
</GeteBayOfficialTimeRequest>

你的代币

我试过(我想……见下文),得到了完全相同的结果。我将“postfile”更改为仅显示在上面的内容(“此值必须在标题中”-使用正确的APP-ID-无其他更改),然后是一个空行,后面是您首先编写的内容(“仅请求正文必须在数据中”),并使用了对curl可执行文件的相同调用。同样,我的“postfile”只包含上面显示的内容和我正确的APP-ID。结果相同。我现在已获得Curl命令行exe,可以发布到ebay生产站点并返回预期的订单数据。我将尝试记录我是如何做到这一点的,并回答我自己的问题。我想我应该使用下面的链接。。。“回答你的问题”?
X-EBAY-API-APP-ID:***-MyReal-APP-ID-here***
X-EBAY-API-VERSION:807  
X-EBAY-API-COMPATIBILITY-LEVEL:707
X-EBAY-API-SITE-ID:0
X-EBAY-API-CALL-NAME:GeteBayTime
X-EBAY-API-REQUEST-ENCODING:XML
Curl -X POST -H "Content-type: text/xml" -H "X-EBAY-API-COMPATIBILITY-LEVEL:911" -H "X-EBAY-API-SITEID:3" -H "X-EBAY-API-CALL-NAME:GeteBayOfficialTime" -d @postfile.txt https://api.ebay.com/ws/api.dll
<?xml version="1.0" encoding="utf-8"?>
<GeteBayOfficialTimeRequest xmlns="urn:ebay:apis:eBLBaseComponents">
    <RequesterCredentials>
        <eBayAuthToken>Your Token</eBayAuthToken>
    </RequesterCredentials>
</GeteBayOfficialTimeRequest>