2015-05-16 33 views
5

(Edit: ho cancellato questo problema utilizzando HTTPoison 's get funzioneCome posso utilizzare httpotion dietro il proxy?

HTTPoison.start 
HTTPoison.get!("httpbin.org/get", [], [{:proxy, {"proxy.mydomain.com", 8080}}]) 

Sono un principiante per l'utilizzo di elisir ho provato l'applicazione del campione sul httpotion come il primo passo

!...

iex> risposta = HTTPotion.get "httpbin.org/get"

Tuttavia, non potrebbe raggiungere al sito behin d il proxy.

iex(1)> res = HTTPotion.get "httpbin.org/get" 
** (HTTPotion.HTTPError) nxdomain 
    (httpotion) lib/httpotion.ex:195: HTTPotion.handle_response/1 

Senza proxy, funziona correttamente così;

iex(1)> res = HTTPotion.get "httpbin.org/get" 
%HTTPotion.Response{body: "{\n \"args\": {}, \n \"headers\": {\n  \"Content-Length\": \"0\", \n \"Host\": \"httpbin.org\"\n }, \n \"origin\": \"191.238.84.51\", \n \"url\": \"http://httpbin.org/get\"\n}\n", 
headers: ["Access-Control-Allow-Credentials": "true",... 

Ho provato a impostare i parametri proxy leggendo ibrowse di cui httpotion dipende, come;

req = HTTPotion.get("httpbin.org/get", [{:proxy_host, "proxy.mydomain.com"}, {:proxy_port, 8080}]) 

Ma il risultato è lo stesso.

Come posso impostare i parametri del proxy per httpotion? O ci sono delle librerie di sostituzione su elixir per l'accesso HTTP che possono gestire i proxy?

Il mio ambiente è Ubuntu 14.04.2 e le variabili di ambiente (http_proxy, https_proxy, HTTP_PROXY e HTTPS_PROXY) sono impostate correttamente.

+2

Forse chiedere nel progetto HTTPoison se non è possibile ottenere una risposta qui: https://github.com/edgurgel/httpoison –

+0

Grazie, José. Chiederò la domanda sul sito del progetto. Ho appena iniziato a imparare l'elisir, confondendo ancora la nuova sintassi come "atom starting by:". – HirofumiTamori

+0

@HirofumiTamori ricorda di inviare una risposta alla tua domanda se riesci a trovare una soluzione tramite il tracker dei problemi di httpoison :). – whatyouhide

risposta

8

Date un'occhiata a httpoison tests: D

ecco come si fa una richiesta GET con delega:

HTTPoison.get!("http://www.google.com", [], [{:proxy, "proxy.company.address:port"}]) 
+2

Questi sono test di 'HTTPoison', non' HTTPotion's' – JustMichael

2

avevo appena capito questo io stesso leggendo la fonte, ma ora mi accorgo che è documentato nell'ultimo README ...

Versione corta (poiché questa risposta è comparsa prima in una ricerca Google rispetto al README) è necessario passare i parametri direttamente a ibrowse, lo si fa usando l'opzione: ibrowse, quindi si noti anche ibrowse generalmente t fiocchi carattere elenca

Così, ad esempio:

HTTPotion.get "httpbin.org/get", [ ibrowse: [ proxy_host: 'some.host', proxy_port: 8080 ] ] 

nota, httpotion non sembra intercettare eccezioni terribilmente bene nella sua non "!" versioni di funzioni ... Se non si utilizzano elenchi di caratteri o simili, verranno generati tutti i tipi di eccezioni difficili ...

Problemi correlati