📅  最后修改于: 2020-10-21 05:37:42             🧑  作者: Mango
在本章中,我们将讨论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 - http://localhost:" + server.port);
console.log(server.port);
server.close();
console.log(server.port);
上面的程序生成以下输出。
server started - http://localhost:8080
8080
在这里,关闭服务器后,我们已对server.port进行了控制台。因此,它将不会响应,因为Web服务器已经关闭。
server.listen方法使用带有两个参数的port和callback函数-Request Object和Response Object 。
请求对象包含以下属性-
方法-这定义了方法GET / POST。
URL-显示请求的URL。
httpVersion-显示实际的http版本。
标头-显示带有键值对的所有标头。
发布-请求正文仅适用于发布方法。
postRaw-如果Content-Type标头设置为’application / x-www-formurlencoded’,则帖子的原始内容将存储在此额外属性(postRaw)中,然后该帖子将使用URL解码自动更新数据版本。
响应对象包含以下属性-
标头-将所有HTTP标头作为键值对。应该在第一次调用write之前设置它。
SetHeader-设置一个特定的头。
标头(名称) -返回给定标头的值。
StatusCode-设置返回的HTTP状态代码。
SetEncoding(编码) -用于转换提供给write()的数据。默认情况下,数据将转换为UTF-8。如果数据是二进制字符串,则指示“二进制”。如果数据是Buffer(例如来自page.renderBuffer),则不需要。
写(数据) -它发送响应主体的数据。可以多次调用。
WriteHead(statusCode,headers) -它向请求发送响应头。状态代码是3位数的HTTP状态代码(例如404)。最后的参数和标头是响应标头。
关闭-关闭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("Welcone to Phantomjs ");
response.write("Hello World
");
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:
Welcone to Phantomjs Hello World