如何解决在Coldfusion上使用Trustpilot API发起Trustpilot邀请
我正在尝试编写一个Web应用程序以发送自动trustpilot邀请,但是,当尝试在第二个CFHTTP中提交数据以处理对CFHTTPParaM中的每个“类型”选项的调用时,将返回“不支持的媒体类型”错误:
<cfset apiKey = "XXXXXXX">
<cfset secret = "YYYYY">
<cfset encAccess = apiKey & ":" & secret>
<cfset encAccess = ToBase64(encAccess)>
<cfset myurl = "https://api.trustpilot.com/v1/oauth/oauth-business-users-for-applications/accesstoken">
<!---Generate Access Token Call--->
<cfhttp url="#myurl#" result="myauth" method="POST">
<cfhttpparam type="HEADER" value="Basic[#encAccess#]" name="Authorization"></cfhttpparam>
<cfhttpparam type="HEADER" value="application/x-www-form-urlencoded" name="Content-Type"></cfhttpparam>
<cfhttpparam type="FORMFIELD" value="password" name="grant_type"></cfhttpparam>
<cfhttpparam type="FORMFIELD" value="email@address.com" name="username"></cfhttpparam>
<cfhttpparam type="FORMFIELD" value="Password" name="password"></cfhttpparam>
</cfhttp>
<cfset result = DeserializeJSON(#myauth.fileContent#)>
<cfset token = #result.access_token#>
<!--SET DATA TO SEND FOR INVITION--->
<cfset mydata = "{
'consumerEmail': 'consumer@email.com','replyTo': 'email@address.com','referenceNumber': '11223344','consumerName': 'Consumer Name','locale': 'en-US','senderEmail': 'noreply.invitations@trustpilotmail.com','serviceReviewInvitation': {
'preferredSendTime': '2020-09-01T17:00:00','redirectUri': 'https://uk.trustpilot.com',],'templateId': 'XXXYYYZZZ'
},'senderName': 'MyCompany'
}">
<cfset inviteurl = "https://invitations-api.trustpilot.com/v1/private/business-units/X1X1X1X1X1X1/email-invitations?token=" & token>
<cfhttp url="#inviteurl#" result="newresult" method="POST">
<cfhttpparam value="#mydata#" name="request" type="FORMFIELD"></cfhttpparam>
</cfhttp>
<cfdump var="#newresult#">
作为参考,我正在尝试遵循此处列出的指南:https://developers.trustpilot.com/invitation-api#create-invitation(s)
此代码后半部分的任何帮助都会有很大帮助。
解决方法
我相信Trustpilot的API希望将JSON数据作为请求正文,但是您正在尝试将其填充在表单字段中。 试试:
# sentence = ['The','sentence','is','a','list','of','words',...]
# ALL_Lines = list of tuples; list(tuple(string,object))
# so the name is basically a string and line is an object where,object.words returns a list of words
names = [(name,line) for name,line in ALL_LINES if any([word in line.words() for word in sentence])]
请注意,以上示例假设<cfhttp url="#inviteurl#" result="newresult" method="POST">
<cfhttpparam type="header" name="Content-Type" value="application/json" />
<cfhttpparam type="body" value="#mydata#" />
</cfhttp>
已经是字符串。如果它仍然是结构化数据,则应改用mydata
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。