nodejs-httpクライアント

4320 ワード

httpモジュールは2つの関数http.requestとhttp.getを提供し、機能はクライアントとしてHTTPサーバに要求を開始する.
http.requestはHTTP要求を開始します.二つのパラメータを受けて、オプトモーションは、要求のパラメータを示す関連配列のオブジェクトであり、calbackは要求のコールバック関数である.
optionでよく使われるパラメータは以下の通りです.
 
ホスト
 :サイトのドメイン名またはIPアドレスを要求します.

 ポーター
 :サイトのポートを要求します.デフォルト80です.
 
method
 :要求方法は、デフォルトはGETです.
 
パス 
:要求されたルートに対するパスは、デフォルトでは「/」です.QueryStringはその中に含まれているはずです.例えば/search?query=byvoid.

 headers 
:連結配列オブジェクトは、要求ヘッダの内容です.
calbackはhttp.Client Resonseの一例であるパラメータを伝達します.http.requestはhttp.C.lient Requestの例を返します. 
サービス先のコードは以下の通りです.
var http = require("http");//  http  
var url = require("url");//  url  
var querystring = require("querystring");//  querystring  
http.createServer(
  //       ,              
  //req     J2EE HttpServletRequest,
  //res     J2EE HttpServletResponse
	function(req,res){
	  	res.writeHead(200,{"Content-Type":"text/html"});
	  	//      
	  	var requresturl = req.url;
	    res.write("request url:" + requresturl + "
"); // var pathname = url.parse(req.url).pathname; res.write("pathname:" + pathname + "
"); // var querystr = url.parse(req.url).query; res.write("query str : " + querystr + "
"); // var obj = url.parse(req.url); res.write(JSON.stringify(obj)+"
"); res.write("
"); // JSON var params = querystring.parse(querystr); res.write(JSON.stringify(params)+"
"); res.write("
"); res.end("please input a url like : http://172.24.12.38:3000/aa/b/c/a.do?a=1&b=4"); } ).listen(3000); // 3000 console.log(" HTTP Server is Listening at port 3000.");
クライアント送信要求のコードは以下の通りです.
var http = require("http");//  http  
var querystring = require("querystring");//  querystring  
var contents = querystring.stringify({
	name:'devil13th',
	email:'[email protected]',
	addr : ' China BeJing Xizhimen Xinjiekou'
})

/*
http.request(options, callback)    HTTP   。      ,option  
           ,       ,callback         
 --- option
         。
 host :         IP   。
 port :       ,   80。
 method :    ,    GET。
 path :          ,   “/”。QueryString        。
   /search?query=byvoid。
 headers :        ,       。
 ----callback       ,  http.ClientResponse    。
 
http.request      http.ClientRequest    。
*/
var options = {
	host:'172.26.192.180',
	path:'/aa/b/c/a.do?a=1&b=4',
	method:'get',
	port:3000,
	headers:{
		'Content-Type':'application/x-www-form-urlencoded',
		'Content-Length':contents.length
	}
}

//  http.ClientRequest   ,
/*                 HTTP   。
      response   ,
  http.request  http.get                  。
*/

var req = http.request(options,function(res){
	res.setEncoding('utf-8');
	res.on('data',function(data){
		console.log(data);
	});
});

req.write(contents);
req.end();//       req.end()     ,            。
二つのbashを開けて、まずサーバコードを実行して、クライアントコードを実行しています. 
 
http.Client Request対象http.c.lient Requestはhttp.requestまたはhttp.getによって生成されたオブジェクトを返して、すでに発生して進行中のHTTP要求を表しています.これはhttp.requestまたはhttp.getの第二パラメータで指定されたコールバック関数のバインディングオブジェクトであるレスポンスイベントを提供します. http.Client Requestはhttp.ServerResonseのようにwriteとend関数を提供しています.サーバに要求体を送るために、POST、PUTなどの操作に使われます.すべての書き込みが終わったら、end関数を呼び出してサーバに通知しなければなりません.そうでなければ、要求は無効です.http.Client Requestはまた、以下の関数を提供します.request.abort():送信中の要求を終了します.request.set Timeout(timeout):設定要求タイムアウト時間、timeoutはミリ秒数です.要求がタイムアウトしたら、コールバックが呼び出されます.また、request.set NoDelay(noDelay)、request.set SocketKeepAlive(enable)、initial Delay)などの関数があります.app.lient Resonseht.set.sets.sets Keep Aliveとhttp.ServerRequestは似ています.受信したデータを表します.http.C.lient Resonseはまた、要求の結果状態status Codeを表すための属性を提供しています. HTTP状態コード、例えば200、404、500 http Version HTTPプロトコルバージョンは、通常1.0または1.1 headersである. HTTP要求ヘッドトレイ HTTP要求の最後(一般的ではない)http.C.lient Resonseはまた、以下のいくつかの特殊な関数を提供している.デフォルトのコードを設定します.dataイベントがトリガされると、データはencodingで符号化されます.デフォルト値はnullで、つまり符号化せずにBufferとして格納されます.一般的には、utf 8として符号化されます.レジスタンス.pause():データの受信とイベントの送信を一時停止し、ダウンロード機能を実現するのに便利です.レジスタンス・レム():休止状態から回復します.