POST
私のサーバーのAPIエンドポイントに接続しようとしています。 Advanced REST Clientを使用すると、ヒットしてJSON応答を期待どおりに取得できるため、エンドポイントが機能することがわかります。問題は、キーと値のペアが含まれているrequest.write(postData)
を呼び出しても、要求の本文にデータが送信されていないようです。本文にこのデータが送信されていなければ、私のサーバーはこの情報がなくても予想どおり401エラーを返します。 POSTサーバー側の内容を印刷するのは空ですが、なぜ空であるのかはわかりません。HTTPSリクエストがRESTリクエストの本文を投稿していません
var postData = querystring.stringify({
"access_token" : accessToken,
"id": applianceId
});
var serverError = function (e) {
log("Error", e.message);
context.fail(generateControlError(requestName, "DEPENDENT_SERVICE_UNAVAILABLE", "Unable to connect to server"));
};
var callback = function(response) {
var str = "";
response.on("data", function(chunk) {
str += chunk.toString("utf-8");
});
response.on("end", function() {
result = generateResult(CONTROL, requestName.replace("Request", "Confirmation"), messageId);
context.succeed(result);
});
response.on("error", serverError);
};
var options = {
hostname: REMOTE_CLOUD_HOSTNAME,
port: 443,
path: REMOTE_CLOUD_BASE_PATH + "/" + endpoint,
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
}
};
var request = https.request(options, callback);
request.on("error", serverError);
//This doesn't seem to write anything since if I print out the POST
//data server-side it's empty; however, if I print out the value of
//postData here, it looks as expected: 'access_token=xxxxx'
request.write(postData);
request.end();
おかげで同じコードを書くことが好きな人のために。残念ながら、問題はARCの現在のコンテンツタイプで作業しているため、JSONに切り替えることで解決されません。 AWS上で動作しているので、サーバに問題があるとは思わない。私の実装では何らかの理由で投稿データが送信されていないようです。 – roundtheworld
あなたの実装をテストしました。それが働いています。したがって、あなたが投稿したコードとは関係ありません – Aminadav