将curl请求转换为coldfusion http的问题

时间:2014-09-24 16:59:06

标签: curl coldfusion

我已经查看了有关此主题的其他帖子,但似乎没有解决这个问题。

以下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> 

任何人都可以提供任何见解吗?

谢谢

1 个答案:

答案 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