2013-09-08 3 views
2

웹 페이지의 내용을 확대 기능의 html-resource 기능을 사용하여 긁어 내려고했지만 브라우저에서 나오지 않아 응답 403이 표시됩니다. Java에서 재정의 (대답은 here입니다)하지만이 문제를 처리 할 수있는 클로저 (clojure) 방법을보고 싶습니다. 아마도 이것은 html-resource 함수에 매개 변수를 제공하여 얻을 수 있지만 매개 변수로 전달할 필요가있는 방법과 예제를 발견하지 못했습니다. 어떤 제안이라도 대단히 감사하겠습니다.응답 코드 처리 : clojure가 포함 된 URL에 대해 403 번

감사합니다.

+1

제대로 설정하려면 몇 가지 설정을 제공 할 수있는 연결을 제어 할 수있는 clj-http 또는 http-kit와 같은 것이 필요합니다 (html-resource) – Chiron

+1

html-resource는 여러 방법으로 URL 객체를 전달할 수 있습니다. https://github.com/cgrand/enlive/blob/master/src/net/cgrand/enlive_html.clj#L112 이것은 URL 연결 개체에 '사용자 에이전트'를 설정할 수있는 좋은 지점입니다. – Chiron

답변

6

확대의 html-resource은 기본 요청 속성을 무시할 수있는 방법을 제공하지 않습니다. 다른 답변과 마찬가지로 직접 연결을 열고 InputStreamhtml-resource으로 전달할 수 있습니다. 다음과 같은

뭔가를 처리 할 것입니다 : 그것은 자신의 기능에 밖으로 더 나은 분할을 보일 수 있습니다

(with-open [inputstream (-> (java.net.URL. "http://www.example.com/") 
          .openConnection 
          (doto (.setRequestProperty "User-Agent" 
                 "Mozilla/5.0 ...")) 
          .getContent)] 
    (html-resource inputstream)) 

,하지만.

+0

답변 해 주셔서 감사합니다. –

+0

꽤 잘 작동했습니다. 다시 한번 감사합니다. –

관련 문제