HTTP 网络请求
稳定性: 稳定
http 模块提供一些进行 http 请求的函数。
http.get(url[, options, callback])
url{string} 请求的 URL 地址,需要以"http://"或"https://"开头。如果 url 没有以"http://"开头,则默认为"http://"。options{Object} 请求选项。参见[http.request()][]。callback{Function} 回调函数,可选,其参数是一个[Response][]对象。如果不加回调函数,则该请求将阻塞、同步地执行。
对地址 url 进行一次 HTTP GET 请求。如果没有回调函数,则在请求完成或失败时返回此次请求的响应(参见[Response][])。
最简单 GET 请求如下:
console.show();
var r = http.get("www.baidu.com");
log("code = " + r.statusCode);
log("html = " + r.body.string());
采用回调形式的 GET 请求如下:
console.show();
http.get("www.baidu.com", {}, function (res, err) {
if (err) {
console.error(err);
return;
}
log("code = " + res.statusCode);
log("html = " + res.body.string());
});
如果要增加 HTTP 头部信息,则在 options 参数中添加,例如:
console.show();
var r = http.get("www.baidu.com", {
headers: {
"Accept-Language": "zh-cn,zh;q=0.5",
"User-Agent":
"Mozilla/5.0(Macintosh;IntelMacOSX10_7_0)AppleWebKit/535.11(KHTML,likeGecko)Chrome/17.0.963.56Safari/535.11",
},
});
log("code = " + r.statusCode);
log("html = " + r.body.string());
一个请求天气并解析返回的天气 JSON 结果的例子如下:
var city = "广州";
var res = http.get(
"http://www.sojson.com/open/api/weather/json.shtml?city=" + city
);
if (res.statusCode != 200) {
toast("请求失败: " + res.statusCode + " " + res.statusMessage);
} else {
var weather = res.body.json();
log(weather);
toast(
util.format(
"温度: %s 湿度: %s 空气质量: %s",
weather.data.wendu,
weather.data.shidu,
weather.quality
)
);
}