1

これは、リクエストを行う Google Apps Script です。

UrlFetchApp.fetch('https://user:password@sitename.com/api', {
  method: 'put',
  headers: { 'Accept': '*/*' },
  payload: 'foo=bar&baz=qux'
});

検査のためにhttp://requestb.in/に正常に投稿できます。

PUT /1bfk94g1 HTTP/1.1
User-Agent: Mozilla/5.0 (compatible; GoogleDocs; script; +http://docs.google.com)
Host: requestb.in
Content-Type: application/x-www-form-urlencoded
Content-Length: 43
Connection: keep-alive
Accept-Encoding: gzip
Accept: */*

foo=bar&baz=qux

ただし、リクエスト URL が の場合は失敗しますhttps://user:password@sitename.com/api。表示される唯一のエラー情報はBad request: https://user:password@sitename.com/api.

curlまったく同じ HTTP リクエストを生成するコマンドを作成しました。

curl -XPUT \
     -H 'Accept-Encoding: gzip' \
     --user-agent 'Mozilla/5.0 (compatible; GoogleDocs; script; +http://docs.google.com)' \
     -d foo='bar' \
     -d baz='qux'\
     https://user:password@sitename.com/api

に正常に投稿されhttps://user:password@sitename.com/apiます。2 つの同一の要求が異なる結果をもたらすのはなぜですか? Google Apps Script に関して何か不足していますか? デバッガーを使用してみましたが、役に立ちませんでした。

4

1 に答える 1

2

は、URL に認証情報を含むリクエストをまだサポートしてUrlFetchAppいないようです。HTTP ヘッダーはAuthorization手動で作成する必要があります。以下の作品:

var response = UrlFetchApp.fetch('https://sitename.com/api', {
  headers: {
    'Authorization': 'Basic ' + Utilities.base64Encode(user + ':' + password)
  }
});
于 2012-11-29T20:11:46.120 に答える