2016-08-22 5 views
1

Zum Beispiel muss ich Daten von meinem imdb.com-Konto analysieren. Also, die Aufgabe ist, die aktuell geloggte Seite zu bekommen. Ich habe den "id" -Cookie vom Browser genommen. Und make GET-Anfrage, aber es funktioniert nicht.Wie setze ich einen Cookie in clj-http?

(ns imdb.core 
    (:require [clj-http.client :as client]) 
(def ^:dynamic *base-url* "http://www.imdb.com/") 
(def id {"id" {:value "my_value" 
       :domain "imdb.com" 
       :secure true 
       :max-age 3600}}) 
(defn get-my-page [] 
    (client/get *base-url* {:cookies id})) 

Ich denke, ich muss meinen ID-Cookie auf clj-http.cookies/cookie-store setzen. Aber wie?

Antwort

0

clj-http bietet clj-http.cookies Namespace, den Sie verwenden müssen.

You can setup your cookie store, dann rufen Sie clj-http.cookies/add-cookie mit Ihrem Cookie extrahiert aus dem Browser und schließlich clj-http.client/get mit der Einstellung :cookie-store.

Auf der anderen Seite können Sie Cookies nur über mehrere HTTP-Aufrufe verwalten, wie in der Dokumentation beschrieben, und rufen Sie einfach die Anmeldeseite direkt von clj-http. Es macht Ihre Logik wiederholbar ohne manuelle Schritte wie das Kopieren von Cookies aus dem Browser.

+0

Danke, Piotrek! Ich habe keine Ahnung, warum 'clj-http.cookies/add-cookie' nicht verfügbar ist, wenn ich [clj-http" 3.1.0 "] und" require "für' clj-http.cookies' natürlich benutze. Also bin ich Code Quellcode zu meinem Code ziehen, aber es funktioniert auch nicht: _ClassCastException clojure.lang.PersistentArrayMap kann nicht in org.apache.http.cookie.Cookie imdb.core/add-cookie (Kern. CLJ: 35) _ My def für Cookie: '(def zz { "zz"{: verwerfen falsch, : domain "imdb.com", : Pfad "/", : Sicherung falsch, : Wert" nicht "}})' Ich bin fest mit ihm ¯ \ _ (ツ) _/¯ – Tim

+0

Sie müssen Ihre Cookie-Spezifikation in 'org.apache.http.cookie ClientCookie' mit 'clj-http.cookies/zu konvertieren "basic-client-cookie", wobei Ihre Cookie-Spezifikation ein Tupel "[Cookie-Name Cookie-Inhalt]" ist. Haben Sie versucht, den Anmeldeendpunkt aufzurufen und dann mit demselben Cookie-Speicher einen Anruf zu erhalten? –

Verwandte Themen