2017-06-20 21 views
0

パブリックAPIでGETリクエストを行う必要があります。私はログインとパスワードのデータが正しいことを知っているが、APIの認証エラーを返します。郵便配達員によって、要求は首尾よくなされる。問題は同じルビコードにあります。基本認証を取得するRubyが動作しない

コード:

nfe_key = '41170608187168000160550010000001561000000053' 
    params = {'grupo' => 'edoc','cnpj' => '08187168000160', 'ChaveNota' => nfe_key, 'Url' => '1'} 

    url = URI.parse('https://managersaashom.tecnospeed.com.br:7071/ManagerAPIWeb/nfe/imprime') 

    get = Net::HTTP::Get.new(url.path) 
    get.basic_auth 'admin', '123mudar' 
    get.set_form_data(params) 

    request = Net::HTTP.new(url.host, url.port) 
    request.read_timeout = 500 #seconds 
    request.use_ssl = true 
    request.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    response = request.start {|http| http.request(get) } 

    puts response.body 

私は同じようにPOST経路上の要求を作成し、それが動作します。なぜ私はGETでうまくいかないのか分かりません。 POSTメソッド

は動作します:

郵便配達で
params = {'grupo' => 'edoc','cnpj' => '08187168000160', 'arquivo' => 'formato=XML 
    ' + xml} 
    url = URI.parse('https://managersaashom.tecnospeed.com.br:7071/ManagerAPIWeb/nfe/envia') 

    post = Net::HTTP::Post.new(url.path) 
    post.basic_auth 'admin', '123mudar' 
    post.set_form_data(params) 

    request = Net::HTTP.new(url.host, url.port) 
    request.read_timeout = 500 #seconds 
    request.use_ssl = true 
    request.verify_mode = OpenSSL::SSL::VERIFY_NONE 
    response = request.start {|http| http.request(post) } 

    puts response.body 

URL:https://managersaashom.tecnospeed.com.br:7071/ManagerAPIWeb/nfe/imprime?grupo=edoc&cnpj=08187168000160&ChaveNota=41170608187168000160550010000001561000000053&Url=1

方法:ポスト ベーシック認証: ユーザ名admin場合 パスワード123mudar

答えて

1

、フォームデータをGETメソッドに渡すことはできません。 Net :: HTTPのドキュメントで与えられた例に基づいてコードを書いて、私のローカルでそれをテストしました。ここに私が持っているものがあります:

nfe_key = '41170608187168000160550010000001561000000053' 
params = {'grupo' => 'edoc','cnpj' => '08187168000160', 'ChaveNota' => nfe_key, 'Url' => '1'} 

uri = URI.parse('https://managersaashom.tecnospeed.com.br:7071/ManagerAPIWeb/nfe/imprime') 


# Add params to URI 
uri.query = URI.encode_www_form(params) 

Net::HTTP.start(uri.host, uri.port, 
    :use_ssl => uri.scheme == 'https', 
    :verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http| 

    request = Net::HTTP::Get.new uri.request_uri 
    request.basic_auth 'admin', '123mudar' 

    response = http.request request # Net::HTTPResponse object 

    puts response 
    puts response.body 
end 
関連する問題