2010-10-04 16 views
6

मैं यह पता लगाने की कोशिश कर रहा हूं कि नेटवर्क.एचटीटीपी.simpleHTTP का उपयोग करके मूलभूत अनुरोध कैसे करें, जो प्रॉक्सी का उपयोग करेगा।प्रॉक्सी के साथ हास्केल के सरल एचटीटीपी का उपयोग करना?

मैंने http_proxy पर्यावरण चर सेट करने का प्रयास किया है, और मुझे लगता है कि मैं समझता हूं कि नेटवर्क का उपयोग करके प्रॉक्सी कैसे बनाना है। HTTP.Proxy। लेकिन एक सरल एचटीटीपी कॉल या प्रॉक्सी का उपयोग करने के लिए अनुरोध प्रकार को सेट करने के लिए हैक पर एपीआई में कुछ भी नहीं लगता है।

वर्तमान कोड रहा है:

import Network.HTTP 
import Network.HTTP.Proxy 
import Data.Maybe 

main = do 
    let proxy = fromJust $ parseProxy "proxyserver.foo.com:80" 
    x <- simpleHTTP (getRequest "http://www.google.com") >>= getResponseBody 
    print x 

उत्तर

9

से documentationsimpleHTTP के लिए:

simpleHTTP req एक प्रत्यक्ष, गैर लगातार HTTP के लिए कनेक्शन खोलने के द्वारा पहुंचाता Request req सर्वर ... यदि आपको HTTP प्रॉक्सी के माध्यम से अनुरोध मध्यस्थ करना है, तो आप एच पर एवे स्वयं अनुरोध को सामान्य करें। या इसके बजाय Network.Browser का उपयोग करने के लिए स्विच करें।

मुझे सच में यकीन नहीं है कि लेखकों का क्या अर्थ है "अनुरोध स्वयं को सामान्य करें"। मुझे नहीं लगता कि simpleHTTPNetwork.HTTP में यह कैसे संभव होगा-मुझे लगता है कि आपको Network.HTTP.HandleStream में एक का उपयोग करना होगा।

तो क्यों न केवल Network.Browser का उपयोग क्यों करें? यह बहुत आसान है:

import Control.Applicative ((<$>)) 
import Data.Maybe (fromJust) 
import Network.Browser 
import Network.HTTP 
import Network.HTTP.Proxy (parseProxy) 

main = do 
    rsp <- browse $ do 
    setProxy . fromJust $ parseProxy "127.0.0.1:8118" 
    request $ getRequest "http://www.google.com" 
    print $ rspBody <$> rsp 
+0

धन्यवाद, जिसने पहले प्रयास किया था। हाँ, मैंने पोस्टिंग के तुरंत बाद एपीआई में 'सामान्यीकृत' टिप्पणी देखी लेकिन मुझे यह नहीं पता था कि इसे कैसे किया जाए। एक कोड नमूना जोड़ने के लिए – devrand

+0

+1 :) – Daniel

संबंधित मुद्दे