Ошибки при подключении к HTTPS с использованием процедур HTTP :: Net (Ruby on Rails) - PullRequest
1 голос
/ 10 мая 2010

код ниже подробно объясняет проблему

#this returns error Net::HTTPBadResponse
      url = URI.parse('https://sitename.com')
      response = Net::HTTP.start(url.host, url.port) {|http|
        http.get('/remote/register_device')
      }

#this works
      url = URI.parse('http://sitename.com')
      response = Net::HTTP.start(url.host, url.port) {|http|
        http.get('/remote/register_device')
      }

#this returns error Net::HTTPBadResponse
      response = Net::HTTP.post_form(URI.parse('https://sitename.com/remote/register_device'), {:text => 'hello world'})

#this returns error Errno::ECONNRESET (Connection reset by peer)
      response = Net::HTTP.post_form(URI.parse('https://sandbox.itunes.apple.com/verifyReceipt'), {:text => 'hello world'})

#this works
      response = Net::HTTP.post_form(URI.parse('http://sitename.com/remote/register_device'), {:text => 'hello world'})

Итак ... как мне отправить параметры POST в https://sitename.com или https://sandbox.itunes.apple.com/verifyReceipt в этом примере?

Дополнительная информация, я пытаюсь заставить это работать в Rails: http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StoreKitGuide/VerifyingStoreReceipts/VerifyingStoreReceipts.html#//apple_ref/doc/uid/TP40008267-CH104-SW1

1 Ответ

1 голос
/ 11 мая 2010

Нашел решение от http://snippets.dzone.com/posts/show/788

Я сделал это по этому коду:

1006 *

     http = Net::HTTP.new('sandbox.itunes.apple.com', 443)
     http.use_ssl = true
     path = '/verifyReceipt'

     # GET request -> so the host can set his cookies
     resp, data = http.get(path, nil)
     cookie = resp.response['set-cookie']

     # POST request -> logging in
     receipt_data_json = {"receipt-data" => Base64.encode64(receipt_data)}.to_json
     #logger.debug "receipt data is now #{receipt_data_json.inspect}"
     data = receipt_data_json
     headers = {
       'Cookie' => cookie,
       'Referer' => 'http://sandbox.itunes.apple.com/verifyReceipt',
       'Content-Type' => 'application/x-www-form-urlencoded'
     }

     response, data = http.post(path, data, headers)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...