質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Q&A

解決済

1回答

2454閲覧

GETで受け取った値をPOSTで転送する

moroheia

総合スコア14

GET

GETとはHTTPが対応するリクエストメソッドの一つです。クライアントからサーバーへ送られたURLパラメータのデータを取得する時必要がある時に使われます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

0グッド

2クリップ

投稿2018/04/18 04:37

編集2018/04/18 05:13

Node.jsを用いて、GETで送られてきた値をPOSTで外部サイトへ送信する仕組みを作りたいです。

  1. GETを受け取る
  2. GETで送られてきた値を取得
  3. 2で取得した値を外部サイトへPOSTで送る

<サイトAからGET送信をする>

var url = 'https://****.cloudfunctions.net/hello?name=' + user_id + '&email=' + email + '&action=Systemon'; // httpsモジュールでリクエストを送出 https.get(url, function(res) { // レスポンスを格納する空の変数を定義 var body = ''; res.setEncoding('utf8'); res.on('data', function(chunk) { // レスポンスボディーを変数に追加 body += chunk; }); res.on('end', function (res) { // レスポンスボディーはJSON形式なので、そこから氏名を取り出す var name = JSON.parse(body).name; var email = JSON.parse(body).email; var action = JSON.parse(body).action; self.emit(':ask', 'こんにちは、' + name + 'さん。あなたのメールアドレスは、' + email + 'です。' + action + 'を実行します。'); }); }).on('error', function(e) { self.emit(':tell', "通信に問題が発生しました"); });

<GETで送られてきた値を取得し、POSTとしてサイトBへ送る>

exports.hello = functions.https.onRequest((request, response) => { if (request.query.name !== undefined) { //----------------- var request = require('request'); var options = { uri: 'http://*****.com:3000', method: 'POST', headers: headers, json: true, form: {"hoge":"fuga"} }; request.post(options, function(error, response, body){ if (!error && response.statusCode == 200) { response.status(200).send(param); } else { response.status(404).send({ message: 'エラー' }); } }); //----------------- } else { response.status(200).send("NONE USER") } })

しかし、 <サイトAからGET送信をする>としばらく処理に時間がかかった後に
下記のようなエラーが吐き出され、タイムアウトしてしまいます。

Error: could not handle the request

何か良い方法はありますでしょうか。
アドバイス頂けましたら幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2018/04/18 04:59

質問には「GETを送ると」と書かれていますが、質問のコードでは「method: 'POST'」となっています。エラーが起きているのは、何をした時で、その時のコードはどうなっていたかを明らかにしないと、回答は得られないと思います。
moroheia

2018/04/18 05:14

説明が不足しており、失礼いたしました。ご指摘頂いた内容を追記しました。
shoya.shiraki

2018/04/19 12:29

POSTを受け取る側にリクエストは到達していますでしょうか?到達していない場合は、ルーティングの記述が間違っている可能性が高そうです
guest

回答1

0

自己解決

request.postではなく、http.requestを利用することで無事にPOSTが送れました!
アドバイス頂き、ありがとうございました。

投稿2018/04/20 00:51

moroheia

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問