0

rhosync application.rbでWebサービスを呼び出そうとしていますが、rhosyncコンソールで500エラー応答が表示され、BBシミュレーターで「サーバーがエラーを返しました」.. :(

私のセットアップに関するいくつかの情報-

ユーザーがユーザー名とパスワードを入力して「ログイン」をクリックすると、rhosyncアプリに接続するrhodesアプリを作成しました。rhosyncアプリケーションのapplication.rbの「認証」メソッドを介してこのWebサービスを呼び出しています。

def authenticate(username,password,session)
    Rho::AsyncHttp.get(:url => 'http://mywebserviceURL',:callback => (url_for :action => :httpget_callback),:callback_param => "" )
end

アップデート

http:asyncの代わりに、SOAPベースのWebサービスを使用してみましたが、問題なく機能しました。rhosyncアプリのapplication.rbで、サンプルを検索するために誰かがここにいる場合のコードを次に示します。

  require "soap/rpc/driver"


        class Application < Rhosync::Base
          class << self
           def authenticate(username,password,session)
              driver = SOAP::RPC::Driver.new('http://webserviceurl')
              driver.add_method('authenticate', 'username', 'password')
              ret=driver.authenticate(username,password)
              if ret=="Success" then
            true
              else
                false
              end
            end
        end

        Application.initializer(ROOT_PATH)
4

2 に答える 2

0

「soap/rpc/driver」が必要

    class Application < Rhosync::Base
      class << self
       def authenticate(username,password,session)
          driver = SOAP::RPC::Driver.new('http://webserviceurl')
          driver.add_method('authenticate', 'username', 'password')
          ret=driver.authenticate(username,password)
          if ret=="Success" then
        true
          else
            false
          end
        end
    end

    Application.initializer(ROOT_PATH)

これでは、add_methodとauthenticateメソッドで何が行われ、どこに書き込まれるかを示します。

于 2011-04-26T06:00:00.973 に答える
0

通常、ログをクランクアップすると問題を見つけることができます。アプリでrhoconfig.txtを編集して、これらのプロパティを設定します-

# Rhodes runtime properties
MinSeverity  = 1
LogToOutput = 1
LogCategories = *
ExcludeLogCategories =

その後、再試行して、端末の出力を確認してください。ログを投稿してください。確認します。mywebserviceURLを変数として使用している場合は、エコーアウトしてmywebserviceURLを出力することもできます。ここの投稿では、これを変更しただけだと思います。ブラウザでアクセスした場合、Webサービスにアクセスできますか?

于 2011-02-08T20:28:15.380 に答える