2

以下代码在 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&amp;card.CVN=070&amp;order.amount=101&amp;customer.merchant=xxxx&amp;card.expiryMonth=08&amp;card.expiryYear=20&amp;order.ECI=SSL&amp;card.PAN=0000000000000008&amp;card.currency=AUD&amp;customer.username=xxxxxx&amp;order.type=capture&amp;customer.password=xxxxxxx</requestParameters> 
</ns2:processCreditCard> 
</S:Body> 
</S:Envelope>

但是,当我将它放在 CF9 服务器上时,响应 FileContent 为空,我得到以下状态代码:

415 Unsupported Media Type

这是显示完整响应的链接:http ://www.onoffezy.com/_testing/gateway/

Trawling Google,415 状态代码表明客户端请求的 mime 类型在服务器上不可用。但是,我找不到可以为请求设置 mime 类型的任何地方。cf9 和 cf10 之间的默认 mimetype 有区别吗?

我仔细查看了这两个版本的文档,但找不到可以解释这一点的差异。

如果有人能对此有所了解并让我知道我需要在 CF9 上做些什么不同的事情,我将不胜感激。

非常感谢

4

3 回答 3

2

感谢所有帮助。我发现了问题。

httpSvc.addParam(type="body", name="body",value=requestParameters);

需要改为:

httpSvc.addParam(type="xml", name="body",value=requestParameters);

cf9 似乎将 type='body' 作为二进制发送,但 cf10 将其作为字符串发送,或者认为它是 xml 并按此方式处理。一旦我将类型更改为“xml”,cf9 就开始将其作为 xml 字符串发送,而不是二进制。

于 2013-02-20T00:16:51.867 回答
1

虽然我不能肯定这会解决您的问题,但您是否尝试将“接受”请求标头设置为响应的内容类型?

例如:

acceptType = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" httpSvc.addParam(name="Accept", value=acceptType, type="header");

于 2013-02-19T04:08:52.417 回答
1

根据此处的文档,指定type="body" HTTP 请求的正文。ColdFusion 不会自动设置内容类型标头或 URL 编码正文内容。要指定内容类型,请使用带有 type=header 的单独 cfhttpparam 标记。 因此,为您的请求指定此标头可能会有所帮助。

就像是:

httpSvc.addParam(type="header", name="Content-Type", value="application/x-www-form-urlencoded");

您没有提供正文内容的示例。您可能必须使用特定内容类型的值。 以下是可用 MIME 类型的列表

requestParamaters您在示例中的变量中拼错了单词参数。它的价值是什么?

于 2013-02-19T14:16:16.607 回答