안녕하세요 개발자 커뮤니티,구문 분석 오류 프록시
내가 AWS Cloudsearch을 사용하고 있습니다 (API 버전 : 2011-02-01) 뒤에 요청을 할 때 업로드하고 난을 의미 Heroku가에 살고 앱에서 검색하는 것을 시도 화이트리스트를 작성할 수 있도록 고정 IP가있는 프록시가 필요하지만 문제가 발생합니다 ...
Proximo라는 Heroku 애드온을 사용하고 있습니다. 여기에 위해 RESTClient로를 설정하는 Heroku가의 코드 예제입니다 :
require "rest-client"
RestClient.proxy = ENV["PROXIMO_URL"] if ENV["PROXIMO_URL"]
res = RestClient.get("http://api.someservice.com/endpoint")
puts "status code", res.code
puts "headers", res.headers
내가 요청을 할 패러데이를 사용하는 aws_cloud_search 보석을 사용하고, 메신저 내 패치 CloudSearch에서 적절한 응답을 얻기 위해 고군분투
# aws_cloud_search.rb
def self.create_connection(url, aws_access_key_id=nil, aws_secret_access_key=nil)
options = ENV['PROXIMO_URL'] ? { proxy: ENV['PROXIMO_URL'] } : {}
connection = Faraday.new url, options do |builder|
builder.use AWSCloudSearch::HttpCodeResponseMiddleware
builder.use FaradayMiddleware::EncodeJson
builder.use FaradayMiddleware::ParseJson
builder.adapter Faraday.default_adapter
builder.proxy ENV['PROXIMO_URL'] if ENV['PROXIMO_URL']
end
connection.headers['User-Agent'] = "AWSCloudSearch-Ruby-Client/#{VERSION}"
connection
end
here (다른 곳에서도) 보이는 패치 작업의 많은 조합을 사용해 보았습니다. 나는 (그들이 제안으로) 포트 (80) 프록시 모에서 제공하는 IP 주소와 프록시를 설정할 때, 나는 다음을 얻을 :
Faraday::Error::ParsingError: 757: unexpected token at 'invalid'
from /app/vendor/bundle/ruby/2.0.0/gems/json-1.6.8/lib/json/common.rb:149:in `parse'
from /app/vendor/bundle/ruby/2.0.0/gems/json-1.6.8/lib/json/common.rb:149:in `parse'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response/parse_json.rb:11:in `block in <class:ParseJson>'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:48:in `call'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:48:in `parse'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:39:in `process_response'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:32:in `block in call'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.8.1/lib/faraday/response.rb:63:in `on_complete'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/response_middleware.rb:30:in `call'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday_middleware-0.9.1/lib/faraday_middleware/request/encode_json.rb:23:in `call'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.8.1/lib/faraday/response.rb:8:in `call'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.8.1/lib/faraday/connection.rb:226:in `run_request'
from /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.8.1/lib/faraday/connection.rb:99:in `post'
from /app/vendor/bundle/ruby/2.0.0/bundler/gems/aws_cloud_search-0d5b94169466/lib/aws_cloud_search/cloud_search.rb:18:in `documents_batch'
from (irb):9
from /app/vendor/bundle/ruby/2.0.0/gems/railties-3.2.19/lib/rails/commands/console.rb:47:in `start'
from /app/vendor/bundle/ruby/2.0.0/gems/railties-3.2.19/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/2.0.0/gems/railties-3.2.19/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'irb(main):010:0> ENV['PROXIMO_URL']
=> 나는 이것이 의미하는 걸릴
"http://nn.nnn.nn.nn:80" (i've obscured my ip address)
그 실제 키 '잘못된'이며, 검색 및 문서 (나는 SSL을 사용하지 않고있다.)에서 이것을 얻는다. (나는 프록시없이 403 금지 된 HTML을 얻는다). 응답 본문을 인쇄하려고 시도했지만 오류가 발생하기 전에 (403과 같이) 인쇄 할 수 있다고 생각합니다.
내가 시도하지 않았거나 접근 방식에 문제가 있다는 것은 명백합니까?
감사
내가 패러데이에 대해 아무것도 몰라,하지만 그것을 " 유효하지 않은 "토큰은 실제 프록시 URI입니까? 패러데이가 파싱을 시도하고 실패하는 것 같습니다. 또한 프록시를 두 번 설정하려고 시도하는 것처럼 보이는데, 한 번은'options'에 한 번, 다른 한 번은 명시 적 호출로 설정하는 것입니다. 나는 양쪽 모두를 제거하고 env 변수'http_proxy'를 설정한다고 말합니다. 패러데이가 그것을 사용합니다. –