PhantomJS - Web 服务器模块方法
在本章中,我们将讨论 PhantomJS 的 Web 服务器模块的各种方法。
close
close 方法用于关闭 Web 服务器。
语法
其语法如下 −
var server = require('webserver').create();
server.close();
示例
以下示例展示了如何使用 close 方法。
var webserver = require('webserver');
var server = webserver.create();
var service = server.listen(8080,function(request,response){
});
if(service) console.log("server started - http://localhost:" + server.port);
console.log(server.port);
server.close();
console.log(server.port);
上述程序生成以下输出。
server started - http://localhost:8080 8080
在这里,我们在关闭服务器后对 server.port 进行了控制。因此,由于 Web 服务器已关闭,因此它不会响应。
listen
server.listen 方法采用端口和回调函数以及两个参数,即 - Request Object 和 Response Object。
Request Object 包含以下属性 −
Method − 这定义了方法 GET /POST。
URL − 这显示请求的 URL。
httpVersion − 这显示实际的 http 版本。
Headers −这将显示所有带有键值对的标头。
Post − 请求正文仅适用于 post 方法。
postRaw − 如果 Content-Type 标头设置为"application/x-www-formurlencoded",则帖子的原始内容将存储在此额外属性 (postRaw) 中,然后该帖子将自动使用 URL 解码版本的数据进行更新。
Response Object 包含以下属性 −
Headers − 包含所有 HTTP 标头作为键值对。应在首次调用 write 之前设置它。
SetHeader −这将设置一个特定的标头。
Header (name) − 它返回给定标头的值。
StatusCode − 它设置返回的 HTTP 状态代码。
SetEncoding (encoding) − 它用于转换给定给 write() 的数据。默认情况下,数据将转换为 UTF-8。如果数据是二进制字符串,则指示"二进制"。如果数据是缓冲区(例如来自 page.renderBuffer),则不需要。
Write (data) − 它发送响应主体的数据。可以多次调用。
WriteHead (statusCode, headers) − 它向请求发送响应标头。状态代码是 3 位 HTTP 状态代码(例如 404)。最后的参数和标头是响应标头。
Close − 它关闭 http 连接。
CloseGracefully − 它与 close() 类似,但它确保首先发送了响应标头。
语法
其语法如下 −
var server = require('webserver').create();
var listening = server.listen(8080, function (request, response) {}
示例
让我们举一个例子来了解 listen 方法的工作原理。
var page = require('webpage').create();
var server = require('webserver').create();
var port = 8080;
var listening = server.listen(8080, function (request, response) {
console.log("GOT HTTP REQUEST");
console.log(JSON.stringify(request, null, 4));
// 我们在这里设置标头
response.statusCode = 200;
response.headers = {"Cache": "no-cache", "Content-Type": "text/html"};
// 上面的标头现在将被隐式发送
// 现在我们编写正文
response.write("<html><head><title>Welcone to Phantomjs</title></head>");
response.write("<body><p>Hello World</p></body></html>");
response.close();
});
if (!listening) {
console.log("could not create web server listening on port " + port);
phantom.exit();
}
var url = "http://localhost:" + port + "/foo/response.php";
console.log("sending request to :" +url);
page.open(url, function (status) {
if (status !== 'success') {
console.log('page not opening');
} else {
console.log("Getting response from the server:");
console.log(page.content);
}
phantom.exit();
});
上述程序生成以下输出。
sending request to :http://localhost:8080/foo/response.php
GOT HTTP REQUEST {
"headers": {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-IN,*",
"Connection": "Keep-Alive",
"Host": "localhost:8080",
"User-Agent": "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/538.1
(KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1"
},
"httpVersion": "1.1",
"method": "GET",
"url": "/foo/response.php"
}
Getting response from the server:
<html><head><title>Welcone to Phantomjs</title></head><body><p>Hello World</p></body>
</html>

