아마존을 아이템 검색으로 호출하고 아이템 목록을 반환하려고합니다. 그러면 내가하고 싶은 것은 특정 판매자의 아이템을 반환하는 것입니다.ColdFusion 아마존 아이템 검색
<cfscript>
test = ItemLookup(ItemId="B00R6T0PLM",AWSAccessKeyId=request.awsaccesskeyid,AssociateTag=request.AssociateTag,secretkey=request.secretkey);
</cfscript>
<cffunction name="ItemLookup" hint="AZ lookup by PID">
<cfargument name="ItemId">
<cfargument name="AWSAccessKeyId" required="false" default="XXXXXXXXXXXXX">
<cfargument name="AssociateTag" required="false" default="zzzzz-">
<cfargument name="secretkey" required="false" default="YYYYYYYYYYYYYYYYYYY">
<cfargument name="ResponseGroup" required="false" default="Medium">
<cfset ts = '#DateFormat(now(), "YYYY-MM-DD")#T'>
<cfset tt = '#TimeFormat(now(), "HH:mm:ss")#Z'>
<cfset encts = '#ts#' & urlencodedFormat('#tt#')>
<cfset p = arraynew(1)>
<cfset p[4] = 'Service=AWSECommerceService'>
<cfset p[8] = 'AWSAccessKeyId=#arguments.AWSAccessKeyId#'>
<cfset p[3] = 'Operation=ItemLookup'>
<cfset p[2] = 'ItemId=#arguments.ItemId#'>
<cfset p[5] = 'Timestamp=#encts#'>
<cfset p[6] = 'AssociateTag=#arguments.AssociateTag#'>
<cfset p[7] = 'Version=2011-08-01'>
<cfset p[1] = 'ResponseGroup=#arguments.ResponseGroup#'>
<cfset ArraySort(p,"text","asc")>
<cfset req_params = '#p[1]#&#p[2]#&#p[3]#&#p[4]#&#p[5]#&#p[6]#&#p[7]#&#p[8]#'>
<cfset lineBreak = Chr(10)>
<cfset tosign = 'GET#lineBreak#webservices.amazon.in#lineBreak#/onca/xml#lineBreak##req_params#'>
<cfset signed = URLEncodedFormat(ToBase64(HMAC_SHA256(tosign,"#arguments.secretkey#")))>
<cfset req = 'http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&Operation=ItemSearch&AWSAccessKeyId=arguments.AWSAccessKeyId&AssociateTag=arguments.AssociateTag&SearchIndex=Apparel&Keywords=Shirt&Timestamp=#ts##tt#&Signature=#signed#'>
<cfhttp url='#req#' method="get" result="res"/>
<cfreturn res.filecontent>
<cfreturn tosign>
</cffunction>
<cffunction name="HMAC_SHA256" returntype="binary" access="public" output="no" hint="Sign for AZ request">
<cfargument name="signMessage" type="string" required="true" />
<cfargument name="signKey" type="string" required="true" />
<cfset local.jMsg = JavaCast("string",arguments.signMessage).getBytes("iso-8859-1") />
<cfset local.jKey = JavaCast("string",arguments.signKey).getBytes("iso-8859-1") />
<cfset local.key = createObject("java","javax.crypto.spec.SecretKeySpec") />
<cfset local.mac = createObject("java","javax.crypto.Mac") />
<cfset local.key = local.key.init(local.jKey,"HmacSHA256") />
<cfset local.mac = local.mac.getInstance(local.key.getAlgorithm()) />
<cfset local.mac.init(local.key) />
<cfset local.mac.update(local.jMsg) />
<cfreturn local.mac.doFinal() />
</cffunction>
<cfdump var="#test#">
내가 돌아 점점 오전 오류 ...
<?xml version="1.0"?> <ItemSearchErrorResponse xmlns="http://ecs.amazonaws.com/doc/2005-10-05/"><Error><Code>RequestExpired</Code><Message>Request has expired. Timestamp date is 2016-08-09T11:42:19Z.</Message></Error><RequestId>c5852914-b6a1-474a-9977-28a20dcb5029</RequestId></ItemSearchErrorResponse>
아무것도하지만, VAR/local' 범위'로 잊지 마세요 * 모든 * 함수 지역 변수 (TS, TT, P, 등등)의. 또한 CF10 +를 사용하는 경우 [HMAC()가 핵심 기능] (https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-functions/functions-h-im/hmac.html)입니다. – Leigh
*'var/local'은 가능한 모든 경쟁 변수를 피하기 위해 모든 지역 변수를 나타냅니다. – Leigh