我正在尝试直接从NetSuite客户端调用Canada Post API以获取运费。
这是开发的测试代码:
<?xml version="1.0" encoding="UTF-8"?>
<messages xmlns="http://www.canadapost.ca/ws/messages">
<message>
<code>400</code>
<description>Backend Bad Request</description></message></messages>
说明非常清楚,XML格式似乎是正确的,但我一直得到相同的回复:
<?xml version="1.0" encoding="UTF-8"?>
<messages xmlns="http://www.canadapost.ca/ws/messages">
<message>
<code>415</code>
<description>Backend Unsupported Media Type</description></message></messages>
有任何线索吗?
*编辑:我也尝试使用'Content-Type':'application / vnd.cpc.ship.rate-v3 + xml',我收到以下错误:
ng-if="moment.utc(x.DateTime).isSame(todaysDate, 'day')"
答案 0 :(得分:3)
第一个问题是您的Content-Type标头错误。你实际上不能混合这样的内容类型。 CP网站表明它想要
Content-Type: "application/vnd.cpc.ship.rate-v3+xml"
您的问题将是NS明确声明他们只会尊重某些内容类型值:
另请注意,如果您调用nlapiRequestURL,并使用内容类型传入标头,NetSuite会遵循以下类型:
所有文本媒体类型(以“text /”开头的类型)
“应用程序/ JSON”
“应用程序/ vnd.maxmind.com国+ JSON”
“应用程序/ xml” 的
“应用程序/肥皂+ xml” 的
“应用程序/ XHTML + xml” 的
“应用程序/原子+ xml” 的
否则,NetSuite将使用我们的默认类型覆盖内容类型,就像未指定类型一样。 NetSuite的默认类型是:
“text / xml; charset = UTF-8”
“application / x-www-form-urlencoded; charset = UTF-8”
我会做的是测试CP是否允许您使用Content-Type:“text / xml”或“application / xml”
如果不是,我会同时提交CP和NS的案例,希望CP允许更通用的类型,或NS允许特定类型。不要屏住呼吸。
我实际上为解决这类问题所做的是通过我控制的系统代理请求。编写一个可以接收请求的小应用程序非常容易;正确重置标头并转发请求。