1

環境:

Windows Server 2012 標準
rhodes-3.5.1.13 - MotorolaRhoMobileSuite2.2.1.13
jQuery Mobile 1.6.4
Java jdk1.6.0_24

説明: この呼び出しを行った後..

    Rho::AsyncHttp.get(
    :url => url,
    :ヘッダー => {
    'Accept'=>'application/json',
    'Accept-Encoding'=>'gzip,deflate,sdch',
    'Accept-Language'=>'en-US,en;q=0.8'
    }、
    :callback => コー​​ルバック、
    :callback_param => callback_param
    )

...このリクエストの結果は以下を返します:

    "Rho::AsyncHttp....callback_param)" {"rho_callback"=>"1", "status"=>"error", "error_code"=>"1", "headers"=>{"Accept"= >"application/json", "Accept-Encoding"=>"gzip,deflate,sdch", "Accept-Language"=>"en-US,en;q=0.8", "User-Agent"=>"Mozilla -5.0 (ANDROID; Win32; 4.0.3)"}, "本体"=>""}

質問: この呼び出しに渡すことができるヘッダーに Rhomobile の制限はありますか? URLをヘッダー付きでFiddlerに貼り付けるとうまくいくようです。'Accept-Encoding'=>'gzip,deflate,sdch' を削除すると、応答は同じになります。

前もって感謝します。

4

1 に答える 1

0

Rhodes は、ソースコードで確認できるように、フレームワークの v3.5 で AsyncHTTP API を実装するために libcURL を使用します。

したがって、libcURL でできることは何でも、ASyncHTTP でも同じことができます。

あなたの特定のケースでは、おそらく「Accept」ヘッダーの代わりに「Content-Type」を使用します。

 Rho::AsyncHttp.get( 
    :url => url, 
    :headers => { 
    'Content-Type'=>'application/json', 
    'Accept-Encoding'=>'gzip,deflate,sdch', 
    'Accept-Language'=>'en-US,en;q=0.8' 
    }, 
    :callback => callback, 
    :callback_param => callback_param 
    ) 

これを Rhodes v4.0 でテストしたい場合は、同じ方法で使用できるネットワーク API が用意されています。

getProps = Hash.new
getProps['url'] = url
getProps['headers'] = {"Content-Type" => "application/json",
                       "Accept-Encoding"=>"gzip,deflate,sdch", 
                       "Accept-Language"=>"en-US,en;q=0.8"}
Rho::Network.get(getProps, url_for(:action => :callback))
于 2013-09-16T17:15:12.733 に答える