2016-03-03 93 views
0

我正在測試如何在Python的請求庫中使用PhantomJS服務器。使用請求庫獲得PhanomJS服務器的響應

GET和POST請求按預期工作,我可以讓PhantomJS服務器請求我想要的任何頁面並將結果放到控制檯,但我無法弄清楚如何使用response.write(page.content)發回頁面內容。請求對象沒有text,content或可用raw內容。使response.write()按預期工作的唯一方法是對響應內容進行硬編碼。如果我將keep-alive添加到true請求函數掛起。

這裏是我的server.js

var webserver = require('webserver').create(); 
    page = require('webpage').create(); 

var service = webserver.listen(8080, function(request, response) { 
    if (request.method == 'POST') { 
     console.log(request.post); 
     var content = ''; 
     page.open(request.post, function (status) { 
      if (status !== 'success') { 
       console.log('FAIL to load the address'); 
       response.statusCode = 200; 
       response.write('Page not responding.'); 
      } else { 
       content = page.content; 
       response.statusCode = 200; 
       response.write(content); 
      } 
     }) 
    } else { 
     response.statusCode = 200; 
     console.log(request.method == 'GET'); 
     response.write('No URL provided'); 
    } 
    response.closeGracefully(); 
}); 

的Python代碼很簡單:

import requests 

response = requests.post('http://127.0.0.1:8080, data='http://python.org') 

回答

1

連接需要將數據發送回之後被關閉:response.close();

而且我建議使用POST請求中的變量,原因是response.post實際上是一個對象。

var webserver = require('webserver').create(); 
    page = require('webpage').create(); 

var service = webserver.listen(8080, function(request, response) { 
    if (request.method == 'POST') { 
     var url = request.post.url; 
     console.log(url); 
     var content = ''; 
     page.open(url, function (status) { 
      if (status !== 'success') { 
       console.log('FAIL to load the address'); 
       response.statusCode = 200; 
       response.write('Page not responding.'); 
       response.close(); 
      } else { 
       content = page.content; 
       response.statusCode = 200; 
       response.write(content); 
       response.close(); 
      } 
     }) 
    } else { 
     response.statusCode = 200; 
     console.log(request.method == 'GET'); 
     response.write('No URL provided'); 
     respone.close(); 
    } 

}); 

然後用url變量郵編:

import requests 
response = requests.post('http://127.0.0.1:8080, data = {'url':'http://python.org'}) 
+0

當然。謝謝!! – dasdachs

+0

@dasdachs請標記爲答案,如果它解決了您的問題) – Vaviloff

+0

它做到了,我只是測試它並標記了您的答案。再次感謝! – dasdachs

相關問題