Nodejs 傳送HTTP POST請求例項
專案裡面需要用到使用NodeJs來轉發HTTP POST請求,研究了很久最後才弄通,把過程記錄一下:
接收端程式碼很簡單,就是回送body.address屬性:
exports.sendEmail = function (req, res) {
res.send(200, req.body.address);
}
之所以能夠訪問body的address屬性,這得益於express.js(connect)的bodyparser中介軟體。該中介軟體解析request的body,假如其content type滿足某些條件的話,就嘗試將其轉換成javascript物件。某些條件是指:multipart, urlencoded, json。
好了,接下來看轉發端的程式碼,為了簡單起見,我直接將hard-coding的資料進行轉發:
exports.sendEmail = function (req, res) { var data = { address: '[email protected]', subject: "test" }; data = require('querystring').stringify(data); console.log(data); var opt = { method: "POST", host: "localhost", port: 8080, path: "/v1/sendEmail", headers: { "Content-Type": 'application/x-www-form-urlencoded', "Content-Length": data.length } }; var req = http.request(opt, function (serverFeedback) { if (serverFeedback.statusCode == 200) { var body = ""; serverFeedback.on('data', function (data) { body += data; }) .on('end', function () { res.send(200, body); }); } else { res.send(500, "error"); } }); req.write(data + "\n"); req.end(); }
這裡瀏覽器回顯的就是"[email protected]",注意,我把content type設定成x-www-form-urlencoded,這是bodyparser所支援的了型別之一,而body的格式通過require('querystring').stringify(...)來格式化的,這個會將物件轉換成諸如"address=test%40test.com&subject=test"這種格式的字串。
再來看另外一種content type,JSON:
exports.sendEmail = function (req, res) {
var data = {
address: ' [email protected]',
subject: "test"
};
data = JSON.stringify(data);
console.log(data);
var opt = {
method: "POST",
host: "localhost",
port: 8080,
path: "/v1/sendEmail",
headers: {
"Content-Type": 'application/json',
"Content-Length": data.length
}
};
var req = http.request(opt, function (serverFeedback) {
if (serverFeedback.statusCode == 200) {
var body = "";
serverFeedback.on('data', function (data) { body += data; })
.on('end', function () { res.send(200, body); });
}
else {
res.send(500, "error");
}
});
req.write(data + "\n");
req.end();
}
這同樣能成功,但是有2個修改,一個是我用JSON.stringify()來格式化body內容,另一個是我把content type變成了json格式,當然,這個也是body parser所支援的格式之一!
另外,有兩個地方,我不是很清楚,一個是貌似content-length不是必須的,另一個是req.write(data+"\n")的"\n"也不是必須的,這個有待研究。。。
補充:
bodyparser的程式碼在”\node_modules\express\node_modules\connect\lib\middleware\bodyParser.js“,它其實什麼都沒做,只是把解析body的任務派發給了另外3箇中間件:./multipart, ./urlencoded, ./json:
- ./multipart 負責 multipart/form-data 型別。
- ./urlencoded 負責 application/x-www-form-urlencoded 型別。
- ./json 負責 application/json 型別。
相關推薦
Nodejs 傳送HTTP POST請求例項
專案裡面需要用到使用NodeJs來轉發HTTP POST請求,研究了很久最後才弄通,把過程記錄一下: 接收端程式碼很簡單,就是回送body.address屬性: exports.sendEmail = function (req, res) { res.send(
C# 後臺傳送http post請求
/// <summary> /// 後臺傳送post請求 /// </summary> /// <param name="url">請求地址</param> ///
傳送HTTP POST請求工具類
package com.example.demo; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; public class HttpUtilTest { /** * @作用
如何簡單的模擬傳送http post請求
有天在做專案演示的時候要用到post請求的模擬傳送,為此總不至於寫一個html頁面,當時只記得百度了一下模擬傳送http post請求,方法大概都是說用fiddler工具或者使用cmd內建telnet客戶端模擬http請求。這裡抄送附上fiddler工具和telnet模擬po
java傳送http post請求
import java.lang.reflect.Method; import java.net.HttpURLConnection; import java.util.ArrayList; import java.util.Iterator; import java.ut
java傳送https post請求例項
用於進行Https請求的HttpClient SSLClient.Java import java.security.cert.CertificateException;
java傳送https post請求例項
用於進行Https請求的HttpClient SSLClient.java import java.security.cert.CertificateException; import java.
java傳送帶Basic Auth認證的http post請求例項程式碼
Base64加密方式認證方式下的basic auth。 注意 base64的basic auth 使用 httpclient自帶的認證方式如下會認證失敗: CredentialsProvider provider = new BasicCreden
關於傳送http POST請求到另一個系統
剛畢業 也是剛剛接觸 這一塊的知識 接收端是springmvc註解 設定了接收資料為json 編碼為utf-8 請求型別為post package wzh.Http; import java.io.BufferedReader; import java.io.IOE
使用Python傳送http post請求上傳檔案
可以使用第三方模組poster,使用easy_install 安裝方法如下 easy_instll poster 會自動安裝poster模組,安裝成功後,可以看到在poster egg檔案在site package下 這裡注意,根據官方說法:Because this dis
php 傳送http post請求
php curl post請求中攜帶header引數 php curl post請求中攜帶header引數 $url = 'http://localhost/test.php'; $ch = curl_init (); // curl_setopt (
nodejs http 傳送get,post請求
GET請求 var http = require('http'); var querystring = require('querystring'); var data =
Http的Post請求例項
private static string HttpPostRequest(string url, byte[] bodyBytes) { HttpWebRequest request = null; try
簡單的 http 傳送非同步post請求
public static bool DoPost(string postUrl,Dictionary<string, object> parameters,string userToken,out JObject obj) {
c++ HTTP POST請求 向伺服器傳送json資料
本文只是記錄作者學習c++ http已post請求傳送資料 一 .首先要選擇一個第三方庫,我這裡用的是 libcurl 2. 用VS2013開啟工程curl-7.26.0\lib\libcurl.vcproj,可以直接編譯成功,編譯成libcurl.lib靜態庫 二
golang:模擬http post請求
brush else div str response inf 啟動 quest ack 1,發送http post請求(客戶端) func httppost() { data :=`{"type":"10","msg":"hello."}` request,
Java 發送http post 請求
cti httputil param null 支持 value 響應 span util package com.sm.utils; import java.io.BufferedReader; import java.io.InputStreamReader; im
【Python】Http Post請求四種請求體的Python實現
article gif 提交 直接 方法 method 根據 encode 文獻 前言 前幾天一個剛接觸Python不深的朋友問我的Python的xml格式Post請求怎麽發送,剛好最近也在看Http請求相關的內容,所以決定總結一下。 Content-Type Conte
HttpClient post 請求例項
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
HTTP POST請求報文格式分析與Java實現檔案上傳
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!