ウェブサイトからデータを取得するためのHTTPリクエストを作成しようとしています。 これを行うには、カスタムヘッダーを使用する必要があります。 私は郵便配達員と一緒にリクエストをするとき、カスタムヘッダーをうまく追加することですべてうまく動作します。カスタムヘッダーを削除すると、次のエラーメッセージが表示されます。{"error": "content not found"}
これは正常です。HTTPリクエストはPostmanと連携しますが、Railsでは使用できません
私はRailsで同じリクエストを作成しようとしました。 これは私のコードです:
uri = URI.parse("https://www.itqi.com/api/master-descriptor")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
req = Net::HTTP::Get.new(uri.path)
req["itqi-key"] = '************************'
response = http.request(req)
この場合、カスタムヘッダーを追加しました。しかし、これにもかかわらず、データはありません。このエラーメッセージは{"error": "content not found"}
です。私のカスタムヘッダーが考慮されていなかったようです。私は成功なしに多くの可能性を試しました。
私を助けることができる人はいますか?私はアイデアが不足しています。
アドバイスをいただきありがとうございます。
敬具、
EDITここ
はファラデーと私のHTTPS要求である:
conn = Faraday.new(:url => 'https://www.itqi.com', :ssl => {:verify => false})
response = conn.get do |req|
req.url '/api/master-descriptor'
req.headers['Content-Type'] = 'application/json'
req.headers['itqi-key'] = '********************'
end
そして、ここでサーバーの応答です:
応答:#https ://www.itqi.com/api/master-descriptor> @ request =#@request_headers = {"U 「エージェント」=>「ファラデーv0.12.2」、「コンテンツタイプ」=>「アプリケーション/ json」、「itqi-key」=>「**************** ****** "} @ ssl =#@ response =#@response_headers = {" date "=>" Wed、13 Dec 2011 08:25:53 GMT "、" server "=>" Apache/2.4.10 (Debian)」、「content-length」=>「29」、「connection」=>「close」、「content-type」=>「application/json;文字セット= UTF-8 "}ステータス@ = 404 @ reason_phrase =" "が見つかりませんでした>>
常に同じ問題:(
************** **********解決策*************************
いくつかの調査の後で、 。。ヘッダーキーはRailsのでは大文字と小文字が区別されますので、問題を解決するために、私はそれがないと小文字にそれらを置くためにRailsのを強制しなければならなかった、Railsは体系的に大文字
は、私の解決策があります:。
conn = Faraday.new(url: 'https://www.itqi.com', ssl: {verify: false}) do |conn|
conn.request :json
conn.response :json, :content_type => /\bjson$/
conn.adapter Faraday.default_adapter
end
response = conn.get do |req|
req.url '/api/master-descriptor'
itqi_key = CaseSensitiveString.new('itqi-key')
req.headers[itqi_key] = '************************'
end
class CaseSensitiveString < String
def downcase
self
end
def capitalize
self
end
def to_s
self
end
end
あなたの答えをありがとう。私はファラデーを使った。しかし、私は同じ問題があります。 {"error": "content not found"}というエラーメッセージが再び表示されます。このヘッダーを追加するにはどうすればいいですか?{"itqi-key" => '**********************'} – Wivi0
あなたのコードはどうなっていますか?それは次のようなものを行うべきです(大文字小文字の区別)。 'conn.get do | req | req.headers ['Content-Type'] = 'application/json' end' –
ファラデーとサーバーレスポンスでコードを含めるように自分の投稿を編集しました。私のヘッダーが考慮されていない理由を知っていますか?ご協力いただきありがとうございます。 – Wivi0