以下代码在cf10上运行良好。
httpSvc = New http();
httpSvc.setMethod("post");
httpSvc.setCharset("utf-8");
httpSvc.setUrl(svcLocation);
httpSvc.setClientCert(certLocation);
httpSvc.setClientCertPassword(certPassword);
httpSvc.addParam(type="body", name="body",value=requestParameters);
result = httpSvc.send().getPrefix();
requestparameters的值为:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:processCreditCard xmlns:ns2="urn:com.qvalent.payway.api">
<requestParameters>customer.orderNumber=5396&card.CVN=070&order.amount=101&customer.merchant=xxxx&card.expiryMonth=08&card.expiryYear=20&order.ECI=SSL&card.PAN=0000000000000008&card.currency=AUD&customer.username=xxxxxx&order.type=capture&customer.password=xxxxxxx</requestParameters>
</ns2:processCreditCard>
</S:Body>
</S:Envelope>
但是,当我将它放在cf9服务器上时,响应文件内容为空,并得到以下状态代码:
415 Unsupported Media Type
以下是显示完整响应的链接:http://www.onoffezy.com/_testing/gateway/
通过拖网搜索google,415状态代码声明客户端请求的mime类型在服务器上不可用。但是,我找不到可以为请求设置mime类型的任何地方。cf9和cf10之间的默认mimetype有区别吗?
我仔细查看了这两个版本的文档,但找不到可以解释这一点的不同之处。
如果有人能对此有所了解,并让我知道我需要做什么不同的CF9将不胜感激。
非常感谢
最佳答案
感谢所有的帮助。我发现了问题。
httpSvc.addParam(type="body", name="body",value=requestParameters);
需要更改为:
httpSvc.addParam(type="xml", name="body",value=requestParameters);
似乎cf9以二进制的形式发送type='body',但cf10以字符串的形式发送,或者计算出它是xml并以此方式处理它。一旦我将类型更改为“xml”,cf9就开始将其作为xml字符串而不是二进制字符串发送。
关于http - cfhttp在CF9上返回415不支持的媒体类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14947091/