как установить cookie для веб-просмотра ромбики / rhodes - PullRequest
1 голос
/ 03 июня 2011

Я использую приложение rhomobile / rhodes для общения с веб-сервисом и отображения контента в WebView, когда я отправляю информацию для входа в Rho :: AsyncHttp.post с данными для входа и обратным вызовом, я вижу успешный войдите в веб-службу, и приложение получит файл cookie, который я могу поместить и просмотреть. пока все хорошо.

однако следующее, что я пытаюсь использовать, - использовать этот файл cookie для аутентификации WebView, поэтому в обратном вызове:

WebView.set_cookie("10.0.1.190", @params['cookies'])
WebView.navigate("10.0.1.190")

но это перенаправляет меня на страницу входа. отправленный файл cookie не совпадает с файлом cookie в @params['cookies']. Существует ли другой способ установки файлов cookie для IP-адресов? или я что-то не так делаю, или это сейчас на родосе сломано? я пробовал 3.0.0 и 3.0.1 для android и iphone, и они вели себя одинаково.

Ответы [ 2 ]

2 голосов
/ 09 октября 2012

Это то, что у меня сработало без использования js. Я думаю, что это было, вероятно, потому что я добавлял несколько файлов cookie, поэтому в итоге я добавил их по одному вместо всех сразу в обратном вызове.

  def login
      WebView.navigate("http://www.mysite.com/blank.html")
      Rho::AsyncHttp.post(
        :url => "http://www.mysite.com/login?user[username]=joeblow&user[password]=supersecret",
        :callback => url_for(:action => :login_callback)
      )
      render :action => :wait
    end



    def login_callback

        cookies = @params["cookies"].split(';');

            cookie_str = ""
                cookies.each do |c|
                    c = c + ';'
                    WebView.set_cookie("10.0.1.190", c)
                end
         WebView.navigate("http://www.mysite.com")

    end
2 голосов
/ 07 июня 2011

оказывается, что WebView.set_cookie в настоящее время не работает для 3.0.1, но вы можете установить cookie в javascript ... это хак, с которым я столкнулся, похоже, работает:

def login
  WebView.navigate("http://www.mysite.com/blank.html")
  Rho::AsyncHttp.post(
    :url => "http://www.mysite.com/login?user[username]=joeblow&user[password]=supersecret",
    :callback => url_for(:action => :login_callback)
  )
  render :action => :wait
end

def login_callback
  WebView.execute_js("document.cookie='#{@params["cookies"]};expires=Fri, June 10 12:00:00 UTC;path=/;domain=.mysite.com'")
  WebView.navigate("http://www.mysite.com")
end
* 1003blank.html - это просто пустой файл для загрузки WebView без установки файлов cookie.
...