因為一般用法,是使用網頁表單發出post請求向server請求資料
而使用node.js的server再去處理request
不過,總是會遇到需要使用node.js發出request的情況嘛~
首先,先使用request這個套件,網址如下
https://www.npmjs.com/package/request
官網的範例程式(少了一個分號)長這樣
var request = require('request');
request('http://www.google.com', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage.
}
});
不過我使用時,抓回來的response有中文 為了顯示上的好看,
我使用了adobe與google開發的思源黑體
在這邊選擇Noto Sans CJK TC,
是Chinese Japanese Korean Traditonal Chinese的縮寫
安裝好之後,編輯.atom/styles.less
font-family: Noto Sans CJK TC;
font-size:16px;
但是這邊連英文與數字都會套用成思源黑體,覺得好醜,因此改成
font-family: Consolas, 'Courier New', Courier, Noto Sans CJK TC; font-size:16px;
前面的字型是atom的預設字型(atom會隨著你安裝的OS不同改變預設字型)
若是想要更進階應用的話,可以參考@font-face之unicode-range
接下來進入正題啦,直接來看程式碼
request.post({
但是這邊連英文與數字都會套用成思源黑體,覺得好醜,因此改成
font-family: Consolas, 'Courier New', Courier, Noto Sans CJK TC; font-size:16px;
前面的字型是atom的預設字型(atom會隨著你安裝的OS不同改變預設字型)
若是想要更進階應用的話,可以參考@font-face之unicode-range
接下來進入正題啦,直接來看程式碼
request.post({
url:'這裡是你的URL',
qs: '包含querystring的物件',
encoding: null},
encoding: null},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body);
});
}
});
執行後出現亂碼啦
原因就出在編碼的問題上
因此去下載iconv-lite
https://www.npmjs.com/package/iconv-lite
並把程式碼修改成
var str = iconv.decode(new Buffer(body), "big5");
console.log(str);
就大功告成啦
執行後出現亂碼啦
原因就出在編碼的問題上
因此去下載iconv-lite
https://www.npmjs.com/package/iconv-lite
並把程式碼修改成
var str = iconv.decode(new Buffer(body), "big5");
console.log(str);
就大功告成啦