PhantomJS Web 服务器模块方法

PhantomJS Web 服务器模块方法

在这一章中,我们将讨论PhantomJS的Web服务器模块的各种方法。

关闭

关闭 方法用于关闭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 方法接受端口和回调函数作为参数,回调函数有两个参数:

  1. 请求对象
  2. 响应对象

请求对象 包含以下属性:

  1. Method - 定义GET / POST方法。
  2. URL - 显示请求的URL。
  3. httpVersion - 显示实际的http版本。
  4. Headers - 显示所有具有键值对的头信息。
  5. Post - 仅适用于POST方法的请求主体。
  6. postRaw - 如果Content-Type头设置为’application/x-www-formurlencoded’,则原始的POST内容将保存在此额外属性(postRaw)中,并且然后该POST将自动更新为数据的URL解码版本。

响应对象 包含以下属性:

  1. Headers - 作为键值对的HTTP头信息,应在第一次调用write之前设置。
  2. SetHeader - 设置特定的头信息。
  3. Header (name) - 返回给定头信息的值。
  4. StatusCode - 设置返回的HTTP状态码。
  5. SetEncoding (encoding) - 用于将数据转换为write()提供的编码方式,默认情况下,数据将转换为UTF-8。如果数据是二进制字符串,则指示”binary”。如果数据是缓冲区(例如从page.renderBuffer获得的数据),则不需要此参数。
  6. Write (data) - 将数据发送给响应主体,可以多次调用。
  7. WriteHead (statusCode, headers) - 发送响应头到请求,状态码是一个3位数的HTTP状态码(例如404)。最后两个参数是响应头。
  8. Close - 关闭HTTP连接。
  9. 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 = "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>

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程