node.js - 类型错误 : Request path contains unescaped characters NodeJS + Dynamics

标签 node.js https dynamics-crm node-request

我正在向 Dynamics CRM 发出 https.request,以获取 Node js 中联系人的数据。

下面是我的代码:

var options = { path: '/api/data/v8.2/contacts?$select=address1_city,address1_line1,address1_line2,address1_line3,contactid,emailaddress1,firstname,fullname,middlename,mobilephone,statecode,suffix,telephone1,vcm_npiid,vcm_prescriberspeciality,vcm_prescriberstatus,vcm_recordtype,vcm_symphonyid&$orderby=fullname asc&$filter=statecode eq 0',
  host: 'xxxxxx.crm.dynamics.com',
  method: 'GET',
  headers:
   { Authorization: 'Bearer xxxxxxx',
     Accept: 'application/json',
     'Content-Type': 'application/json; charset=utf-8',
     Prefer: 'odata.includeannotations=OData.Community.Display.V1.FormattedValue',
     'OData-MaxVersion': '4.0',
     'OData-Version': '4.0' 
   } 
} 

var crmrequest = https.request(options, function(response) { ... }

我收到此错误:

TypeError: Request path contains unescaped characters

当我尝试在 asc 和 eq 0 查询之间没有空格时[通过删除它]。有用。 任何解决方法

最佳答案

您必须使用querystring.stringifyencodeURI为了转义特殊字符。

const querystring = require('querystring');
const path = '/api/data/v8.2/contacts';
const qs = {
    $select: 'address1_city,address1_line1,address1_line2,address1_line3,contactid,emailaddress1,firstname,fullname,middlename,mobilephone,statecode,suffix,telephone1,vcm_npiid,vcm_prescriberspeciality,vcm_prescriberstatus,vcm_recordtype,vcm_symphonyid',
    $orderby: 'fullname asc',
    $filter: 'statecode eq 0'
}

const options = { 
  path: path + '?' + querystring.stringify(qs),
  host: 'xxxxxx.crm.dynamics.com',
  method: 'GET'
  /* ... */
}

const path = '/api/data/v8.2/contacts';
const query ='$select=address1_city,address1_line1,address1_line2,address1_line3,contactid,emailaddress1,firstname,fullname,middlename,mobilephone,statecode,suffix,telephone1,vcm_npiid,vcm_prescriberspeciality,vcm_prescriberstatus,vcm_recordtype,vcm_symphonyid&$orderby=fullname asc&$filter=statecode eq 0';


const options = { 
  path: path + '?' + encodeURI(query),
  host: 'xxxxxx.crm.dynamics.com',
  method: 'GET'
  /* ... */
}

关于node.js - 类型错误 : Request path contains unescaped characters NodeJS + Dynamics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49886618/

相关文章:

javascript - Electron 将我的应用程序数据存储在 'userData' 路径中

ssl - 如何设置 Dart 以使用 CA SSL 证书?

URL 包含方案但不包含权限(主机名)?

javascript - CRM 2013 查找中的 addCustomView

javascript - Dynamics crm 2016 - Web API 查询 - 动态值

node.js - 来自填充模型的 Mongoose 随机和混合响应

node.js - 为什么升级 feathersjs 后我收到错误 : MethodNotAllowed

javascript - Node.js 与 Electron::运行外部命令并在界面上显示标准输出

SSL 站点和浏览器警告

dynamics-crm - 如何为托管解决方案添加自定义站点地图区域/组/子区域?