我已经查看了有关此主题的其他帖子,但似乎没有解决这个问题。
以下curl请求适用于我们的测试数据库:
curl -XGET 'http://larry:larson@collection.aboutdrawing.org/service.php/find/ca_objects?q=*' -d '{"bundles" : { "ca_objects.access" : { "convertCodesToDisplayText" : true }, "ca_objects.status" : { "convertCodesToDisplayText" : true }, "ca_entities.entity_id" : {"returnAsArray" : true }}}'
但是,我尝试在CF中进行此操作不会返回curl请求的-d部分中指定的字段。
<cfoutput>
<cfset strFields = {"bundles" : { "ca_objects.access" : { "convertCodesToDisplayText" : true }, "ca_objects.status" : { "convertCodesToDisplayText" : true }, "ca_entities.entity_id" : {"returnAsArray" : true }}}>
<cfhttp url="http://larry:larson@collection.aboutdrawing.org/service.php/find/ca_objects?q=*"
method="get"
result="httpResp"
timeout="60"
useragent="#cgi.http_user_agent#">
<cfhttpparam type="body" value="#serializeJSON(strFields)#" >
</cfhttp>
<cfdump var="#httpResp#" >
</cfoutput>
任何人都可以提供任何见解吗?
谢谢
答案 0 :(得分:0)
我强烈建议您使用像fiddler这样的代理工具。安装并运行它,它将充当localhost端口8888的代理。
重新运行你的curl命令通过fiddler代理它:
curl -x localhost:8888 -XGET 'http://larry:larson@collection.aboutdrawing.org/service.php/find/ca_objects?q=*' -d '{"bundles" : { "ca_objects.access" : { "convertCodesToDisplayText" : true }, "ca_objects.status" : { "convertCodesToDisplayText" : true }, "ca_entities.entity_id" : {"returnAsArray" : true }}}'
现在修改你的cfhttp电话:
<cfhttp url="http://larry:larson@collection.aboutdrawing.org/service.php/find/ca_objects?q=*"
method="get"
result="httpResp"
timeout="60"
proxyServer="localhost"
proxyPort:"8888"
useragent="#cgi.http_user_agent#">
现在,您可以在一个位置查看CFHTTP和cURL的请求/响应。使用检查器选项卡查看差异,我怀疑它会告诉您问题所在。如果你使用差异化工具,可以设置Fiddler来使用它来比较两个会话,这使得这个过程更加简单。
此外,我不确定您是否在构建与之交谈的API,但它似乎需要GET中的请求正文,isn't normally used