Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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 如何将此cURL请求转换为UrlFetchApp?_Javascript_Json_Curl_Google Apps Script_Urlfetch - Fatal编程技术网

Javascript 如何将此cURL请求转换为UrlFetchApp?

Javascript 如何将此cURL请求转换为UrlFetchApp?,javascript,json,curl,google-apps-script,urlfetch,Javascript,Json,Curl,Google Apps Script,Urlfetch,所以网站给了我们一些代码示例。我已经设法把GET函数做得足够好了,但是我似乎不能发布任何东西。这是下面的示例 curl -X POST https://api.teachworks.com/v1/customers/family \ -H 'Content-Type: application/json' \ -H 'Authorization: Token token={access_token}' \ -d '{ "customer": {

所以网站给了我们一些代码示例。我已经设法把GET函数做得足够好了,但是我似乎不能发布任何东西。这是下面的示例

curl -X POST https://api.teachworks.com/v1/customers/family \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Token token={access_token}' \
  -d '{
        "customer": 
          {         
            "first_name": "Jake & Paula",       
            "last_name": "Jackson",
            "email": "jakej@example.com",
            "home_phone": "123-123-1234",
            "mobile_phone": "123-123-1234",
            "status": "Active"
           }
       }' 
这是我的密码

function test(){
  url = "https://api.teachworks.com/v1/customers/family";
  var token = {api_key};
  headers = {
      "Accept": "application/json",
      "Authorization": "Token token="+token
    };
  payload = '{ "customer": \
{"first_name": "Jake & Paula", \
"last_name": "Jackson", \
"email": "jakej@example.com",\
"home_phone": "123-123-1234", \
"mobile_phone": "123-123-1234", \
"status": "Active" }}';
  Logger.log(payload);
  options = {
    "headers" : headers,
    "method" : "post",
    "payload" : payload
  }
  Logger.log(options);
  response = UrlFetchApp.fetch(url,options);
  Logger.log(response);
}
每次运行时都会出现相同的错误:

请求返回的代码400失败。截断的服务器响应:缺少必需参数:customer


如果我理解正确,有效载荷等于-d。所以我的代码应该是正确的。请告诉我我做错了什么。

@theMaster说得对,缺少ContentType

标头中的Accept是客户端的应收款mimeType。contentType用于UrlFetchApp选项,与标题的内容类型相同。内容类型是请求正文的mimeType。在您的情况下,需要使用contentType的application/json。顺便问一下,我可以问一下你是否可以确认你的curl命令工作正常吗?源评论@Tanaike

function test(){
  url = "https://api.teachworks.com/v1/customers/family";
  var token = {api_key};
  headers = {
      "Accept": "application/json",
      "Authorization": "Token token="+token
    };
  payload = '{ "customer": \
{"first_name": "Jake & Paula", \
"last_name": "Jackson", \
"email": "jakej@example.com",\
"home_phone": "123-123-1234", \
"mobile_phone": "123-123-1234", \
"status": "Active" }}';
  Logger.log(payload);
  options = {
    "headers" : headers,
    "method" : "post",
    "payload" : payload
    "contentType" = "application/json"
  }
  Logger.log(options);
  response = UrlFetchApp.fetch(url,options);
  Logger.log(response);
}

那些反斜杠在干什么?我从未在urlfetchappYou中使用过它们。您可能只想创建普通pojo,然后在普通对象上使用
JSON.stringify
,而不是尝试直接编写JSON字符串。另外,也可以尝试使用pojo。javascript中的反斜杠允许您进行换行。您没有在标题中的选项
Accept
中设置
contentType
,而是客户端的可接收mimeType
contentType
用于UrlFetchApp选项,与标题的
contentType
相同<代码>内容类型是请求正文的mimeType。在您的情况下,需要使用
application/json
contentType
。顺便问一下,我可以问你是否可以确认你的curl命令工作正常吗?谢谢你的信任,但请包括实际的答案。只有代码的答案对未来读者的价值较小。解释发生了什么变化以及原因。你可以用自己的话写下塔纳克的评论。看见