【Node.js】request post

刚开始接触 NodeJS,纪录一下心得

//==========汇入modules=========
var querystring = require('querystring');
var url = require('url');
var http = require('http');
var https = require('https');
var util = require('util');

//=========POST URL=========
var urlstr = 'url';

//=========POST 内容=========
var bodyQueryStr = {
    "key1": "content1",
    "key2": "content2"
};

var contentStr = JSON.stringify(bodyQueryStr);
var contentLen = Buffer.byteLength(contentStr, 'utf8');
console.log(util.format('post data: %s, with length: %d', contentStr, contentLen));
var httpModule = urlstr.indexOf('https') === 0 ? https : http;
var urlData = url.parse(urlstr);

//=========HTTP请求选项=========
var opt = {
    hostname: urlData.hostname,
    path: urlData.path,
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Content-Length': contentLen
    }
};

//=========处理事件回复=========
var req = httpModule.request(opt, function(httpRes) {
        var buffers = [];
        httpRes.on('data', function(result) {
            buffers.push(result);
        });

        httpRes.on('end', function() {
            var wholeData = Buffer.concat(buffers);
            var dataStr = wholeData.toString('utf8');
            console.log('content ' + dataStr);
        });
    }).on('error', function(err) {
                    console.log('error ' + err);
        });

//=========传送资料,完成发送=========
req.write(contentStr);
req.end();

[Day 7] Request & Response

前言

今天主要来记录一下
HttpServletRequest 和 HttpServlerResponse
是HttpServlet 的doGet()和doPost()所接受的参数
分别继承了ServlerRequest及ServlerResponse的interface


HttpServlerRequest

较常使用到的method

  • getParameter(“name”)
    取出form的的参数

  • gerParameterValues()
    和getParameter相同,只是回传的是string array

  • getHeader(“User-Agent”)
    client 的browser资讯以字串回传)

  • getIntHeader(“User-Agent”)
    client 的browser资讯(以整数回传)

  • getCookies()
    取出cookies相关资讯

  • getSession()
    取出cilent的session

  • getMethod()
    request的HTTP方法

  • getInputStream()
    request的InputStream
    通常如果只是取参数值会使用getParameter或是gerParameterValues
    但若是当资料内容很大的时候,资料内容包含文字或二进位的的内容
    就会使用该方法取得InputStream物件
    可运用在upload的时候
    和他很像的方法为getReader(),如果两个同时呼叫会抛出IllegalStateException例外

  • getRemotePort()
    取得cilent的port

  • getServerPort()
    request要被送往的port

  • getLocalPort()
    request最后送出的port

其中除了getParameter,gerParameterValues,getInputStream
以及getRemotePort,getServerPort,getLocalPort是ServletRequest所提供的之外
其他部分都是由HttpServletRequest提供

API:
ServletRequest
http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html

HttpServletRequest
http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html

另外关于getParameter
还有一个跟他很像的method叫做getAttribute
但差别在于getAttribute是取一个物件(同时也有setAttribute这个method)
而getParameter是接收字串格式的资料

HttpServlerResponse

较常使用到的method

  • setContentType()
    通常使用在呼叫getOutputStream()或getWrite()之前
    设定所response所回传的内容形式(mime types)

  • getOutputStream()
    写入非字元资料,使用write输出

  • getWriter()
    处理字元资料用,使用println()输出

  • setHeader()
    override既有的head值

  • addHeader()
    添加额外的head值

  • setIntHeader()
    以整数取代现有的head值,或在response增加新的head值

以上setContentType,getOutputStream和getWriter都是ServlerResponse所提供的
其余为HttpServlerResponse提供

API:
ServlerResponse
https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/ServletResponse.html

HttpServlerResponse
http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletResponse.html


参考资料:

http://informationgrocery.blogspot.tw/2009/11/javagetparametergetattribute.html

http://openhome.cc/Gossip/ServletJSP/GetReaderInputStream.html