2016-08-22 5 views
1

Например, мне нужно проанализировать данные из моей учетной записи imdb.com. Таким образом, задача состоит в том, чтобы получить текущую страницу. Я взял cookie «id» из браузера. И сделайте запрос GET, но он не работает.Как установить cookie в 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})) 

Я думаю, что мне нужно установить свой файл cookie для clj-http.cookies/cookie-store. Но как?

ответ

0

clj-http содержит clj-http.cookies пространство имен, которое необходимо использовать.

You can setup your cookie store, а затем позвоните clj-http.cookies/add-cookie с вашим файлом cookie, извлеченным из браузера, и, наконец, clj-http.client/get с настройкой :cookie-store.

С другой стороны, вы можете просто сохранить куки-файлы через несколько HTTP-вызовов, как описано в документации, и просто вызвать страницу входа в систему с clj-http напрямую. Это сделает вашу логику повторяемой без ручных шагов, таких как копирование файлов cookie из браузера.

+0

Спасибо, Piotrek! Я понятия не имею, почему «clj-http.cookies/add-cookie» недоступен, когда я использую [clj-http «3.1.0»] и «требую» для 'clj-http.cookies', конечно. Так что я вытаскиваю исходный код defn в свой код, но он также не работает: _ClassCastException clojure.lang.PersistentArrayMap нельзя отнести к org.apache.http.cookie.Cookie imdb.core/add-cookie (core. CLJ: 35) _ Моей Защита для печенья: '(DEF ZZ { "ZZ"{: отбросить ложный, : домен "imdb.com", : путь "/", : обеспечить ложное, : значение" non "}})' Я застрял с ним ¯ \ _ (ツ) _/¯ – Tim

+0

Вам нужно преобразовать вашу спецификацию cookie в 'org.apache.http.cookie ClientCookie', используя' clj-http.cookies/to -basic-client-cookie', где ваш спецификатор cookie является кортежем '[cookie-name cookie-content]'. Вы пытались вызвать конечную точку входа, а затем GET-вызов с тем же хранилищем файлов cookie? –