我正在使用以下方式发出POST请求,使用URL params(有效):
var PAYLOAD = `
<myxmlcontent>
<attribute name="id">1</attribute>
<attribute name="FullName">Joe Bloggs</attribute>
</myxmlcontent>
`
var URL = 'http://www.somewhere.com/integration?apiKey=company&apiToken=123&payload=' + PAYLOAD;
client.request({
url: URL,
type: 'POST',
contentType: 'application/xml'
}).then(
function(data) {
console.log(data);
}
);
但我希望将有效载荷数据放入请求体中。
这是正确的方法吗?我不确定,但到目前为止我的尝试都没有成功:
var PAYLOAD = `
<myxmlcontent>
<attribute name="id">1</attribute>
<attribute name="FullName">Joe Bloggs</attribute>
</myxmlcontent>
`
client.request({
url: 'http://www.somewhere.com/integration',
type: 'POST',
contentType: 'application/xml',
headers: {
apiKey: 'company',
apiToken: '123'
},
dataType: 'xml',
data: 'data=' + JSON.stringify(PAYLOAD)
}).then(
function(data) {
console.log(data);
}
);
我目前正在构建一个客户端Zendesk应用程序。
答案 0 :(得分:1)
首先,您必须确保端点通过POST接受数据,否则即使您正确地发送数据也会失败,其次,如果您想以数据编码形式发送数据,则需要更改{ {1}}到contentType
并将正文作为网址编码字符串或使用application/x-www-form-urlencoded
对象(如果您的框架中可用)发送,例如:
FormData
&#13;
不要忘记编码有效载荷的内容。如果您的端点只接受xml编码的字符串,那么您必须按原样发送字符串,只需确保指定正确的var myData = new FormData();
myData.append("payload", encodeURI(PAYLOAD));
client.request({
url: 'http://www.somewhere.com/integration',
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
headers: {
apiKey: 'company',
apiToken: '123'
},
dataType: 'xml',
data: myData
}).then(
function(data) {
console.log(data);
}
);
,在这种情况下contentType
或{ {1}}。
答案 1 :(得分:0)
解决。这就是我必须做的(谢谢):
var PAYLOAD = `
<myxmlcontent>
<attribute name="id">1</attribute>
<attribute name="FullName">Joe Bloggs</attribute>
</myxmlcontent>
`
var URL = 'http://www.somewhere.com/integration';
client.request({
url: URL,
type: 'POST',
contentType: 'application/x-www-form-urlencoded',
dataType: 'xml',
data: {
apiKey: 'company',
apiToken: '123',
payload: PAYLOAD
}
}).then(
function(data) {
console.log(data);
}
);