如何在FileMaker计算中格式化XML适配eBay Insert from URL API?
解决FileMaker里eBay API请求"Unsupported verb"错误的方案
先搞懂问题根源
错误代码2的"Unsupported verb"其实不是XML格式的问题——你已经验证过XML是对的,问题出在eBay API没识别到正确的HTTP请求方法,或者请求头里的API操作名没传对。
具体修复步骤
1. 强制指定POST请求方法
FileMaker的Insert from URL默认可能用GET,但eBay API大多需要POST。在cURL选项里必须加上:
-X POST
同时要设置正确的Content-Type头,告诉eBay你发的是XML:
-H "Content-Type: text/xml"
2. 检查XML的操作名和命名空间
eBay API靠XML根节点的操作名识别请求类型,比如调用GetItem接口的XML必须是:
<?xml version="1.0" encoding="utf-8"?> <GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents"> <!-- 你的参数内容 --> </GetItemRequest>
注意根节点名(比如GetItemRequest)要和你调用的API接口完全匹配,命名空间也不能错。
3. 修正FileMaker里XML的转义方式
虽然数据查看器里的XML是对的,但cURL计算里的转义容易出问题:
- 别用反斜杠转义引号,FileMaker里字符串内的引号要用双引号转义(比如
"这是一个""带引号""的字符串") - 把整个XML包在cURL的
--data参数里,要么用单引号包裹XML(如果cURL支持),要么用双引号并转义内部的引号:
或者在FileMaker计算里这么写:--data '<?xml version="1.0" encoding="utf-8"?><GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">...</GetItemRequest>'"--data \"<?xml version=\"1.0\" encoding=\"utf-8\"?><GetItemRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">...</GetItemRequest>\""
4. 完整的cURL选项示例
把所有必要参数拼在一起,替换成你自己的API密钥:
"-X POST -H \"Content-Type: text/xml\" -H \"X-EBAY-API-APP-ID: 你的APP_ID\" -H \"X-EBAY-API-DEV-ID: 你的DEV_ID\" -H \"X-EBAY-API-CERT-ID: 你的CERT_ID\" -H \"X-EBAY-API-CALL-NAME: GetItem\" -H \"X-EBAY-API-SITE-ID: 0\" --data \"<?xml version=\"1.0\" encoding=\"utf-8\"?><GetItemRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\"><ItemID>123456789</ItemID></GetItemRequest>\""
注意X-EBAY-API-CALL-NAME必须和XML根节点的操作名一致,比如GetItem对应GetItemRequest。
其他可行方案
1. 用FileMaker的XML函数生成XML
手动写XML容易出错,用XMLCreateElement这类函数自动生成,避免转义问题:
XMLCreateElement("GetItemRequest"; XMLCreateAttribute("xmlns"; "urn:ebay:apis:eBLBaseComponents"); XMLCreateElement("ItemID"; "123456789") )
生成的XML直接传到cURL的--data参数里就行。
2. 拆分请求配置到字段里
把请求头、XML内容分别存在FileMaker字段中,再在cURL计算里引用字段,减少转义的麻烦:
- 建个字段
cURL_Headers存:-H "Content-Type: text/xml" -H "X-EBAY-API-APP-ID: 你的APP_ID" - 建个字段
API_XML存生成好的XML - cURL选项计算写成:
"-X POST " & cURL_Headers & " --data \"" & API_XML & "\""
内容的提问来源于stack exchange,提问作者Richard Lund
相关产品推荐
相关产品推荐

