- 文件系统模块
- PhantomJS - 属性
- PhantomJS - 方法
- 系统模块
- PhantomJS - 属性
- Web 服务器模块
- PhantomJS - 属性
- PhantomJS - 方法
- 其他
- 命令行界面
- PhantomJS - 屏幕截图
- PhantomJS - 页面自动化
- PhantomJS - 网络监控
- PhantomJS - 测试
- PhantomJS - REPL
- PhantomJS - 示例
- PhantomJS 有用资源
- PhantomJS - 快速指南
- PhantomJS - 有用资源
- PhantomJS - 讨论
PhantomJS - Web 服务器模块方法
在本章中,我们将讨论 PhantomJS Web 服务器模块的各种方法。
关闭
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 - https://127.0.0.1:" + server.port); console.log(server.port); server.close(); console.log(server.port);
以上程序生成以下输出。
server started - https://127.0.0.1:8080 8080
在这里,我们在关闭服务器后控制台输出了server.port。因此,它不会响应,因为 Web 服务器已关闭。
监听
server.listen 方法接受端口和回调函数,回调函数带有两个参数:请求对象和响应对象。
请求对象包含以下属性:
Method - 定义 GET/POST 方法。
URL - 显示请求的 URL。
httpVersion - 显示实际的 http 版本。
Headers - 显示所有带有键值对的标头。
Post - 仅适用于 post 方法的请求正文。
postRaw - 如果 Content-Type 标头设置为 'application/x-www-formurlencoded',则 post 的原始内容将存储在此额外属性 (postRaw) 中,然后该 post 将自动更新为数据的 URL 解码版本。
响应对象包含以下属性:
Headers - 具有所有 HTTP 标头作为键值对。它应该在第一次调用 write 之前设置。
SetHeader - 设置特定标头。
Header (name) - 返回给定标头的值。
StatusCode - 设置返回的 HTTP 状态代码。
SetEncoding (encoding) - 用于转换传递给 write() 的数据。默认情况下,数据将转换为 UTF-8。如果数据是二进制字符串,则指示“binary”。如果数据是 Buffer(例如来自 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)); // we set the headers here response.statusCode = 200; response.headers = {"Cache": "no-cache", "Content-Type": "text/html"}; // the headers above will now be sent implictly // now we write the body 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 = "https://127.0.0.1:" + 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 :https://127.0.0.1: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>