Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简单但难以将POST请求从使用URL参数转换为请求正文_Javascript_Xml_Api_Post_Zendesk - Fatal编程技术网

Javascript 简单但难以将POST请求从使用URL参数转换为请求正文

Javascript 简单但难以将POST请求从使用URL参数转换为请求正文,javascript,xml,api,post,zendesk,Javascript,Xml,Api,Post,Zendesk,我使用URL参数以以下方式发出POST请求,该请求有效: var PAYLOAD = ` <myxmlcontent> <attribute name="id">1</attribute> <attribute name="FullName">Joe Bloggs</attribute> </myxmlcontent> ` var URL = 'http://www.somewhere.com/in

我使用URL参数以以下方式发出POST请求,该请求有效:

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应用程序。

首先,您必须确保端点通过POST接受数据,否则即使您正确保存数据,它也会失败;其次,如果您希望以url编码的形式发送数据,您需要将contentType更改为application/x-www-form-urlencoded,并将正文作为url编码字符串发送,或者使用FormData对象发送(如果框架中有),例如:

var myData=新FormData; myData.appendpayload,encodeURIPAYLOAD; client.request{ 网址:'http://www.somewhere.com/integration', 键入:“POST”, contentType:'application/x-www-form-urlencoded', 标题:{ 阿皮奇:“公司”, apiToken:'123' }, 数据类型:“xml”, 数据:myData }.那么 函数数据{ 控制台日志数据; }
; 解决了。这就是我要做的谢谢你:

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);
  }
);

有用文章:

是的,基本上是这样,只是没有对参数值进行编码。并且您的内容类型与您发送的内容不匹配。param字符串可能包含一个xml值,但它仍然是一个param字符串,而不是xml。嗨,Kevin,我只是想说我感谢你的帮助。如果我理解正确,我对代码做了以下更改。在请求之前:请求正文中的PAYLOAD=encodeURIComponentPAYLOAD:dataType:'text',data:'data='+JSON.stringifyPAYLOAD。不幸的是,我仍然收到500条回复。服务器希望您给出什么?我正在阅读与API相关的文档。入站API中的有效负载请求参数是XML。我不确定这是否值得注意:如果集成是在web服务模式下进行的,则****和客户端应用程序之间的消息是通过HTTP/HTTPS进行的。所有API都以键值对样式而不是REST样式接收输入,并以XML格式响应客户端。身份验证是通过在****和客户应用程序中维护的登录id/密码组合进行的。感谢arielnmz帮助我了解更多信息。我要看看我是否成功。感谢您抽出时间为其他人arielnmz和@Kevin_B提供指导