2013-09-16 59 views
1

環境:如何正確設置Rhomobile API調用的請求標頭?

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

說明: 使得在此之後致電..

 

    Rho::AsyncHttp.get( 
    :url => url, 
    :headers => { 
    'Accept'=>'application/json', 
    'Accept-Encoding'=>'gzip,deflate,sdch', 
    'Accept-Language'=>'en-US,en;q=0.8' 
    }, 
    :callback => 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)"}, "body"=>""} 

問題: 在允許我傳遞給此調用的標頭上是否存在Rhomobile限制?它似乎工作,如果我把url,標題,粘貼到提琴手。當我刪除'Accept-Encoding'=>'gzip,deflate,sdch'時,響應是一樣的。

在此先感謝。

回答

0

Rhodes使用libcURL在框架的v3.5中實現AsyncHTTP API,儘可能在sourcecode中看到。

所以無論在libcURL中可以做什麼,在ASyncHTTP中都可以做到。如果你想在羅德V4.0現在來測試這一點,有網絡

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 
    ) 

在您的特定情況下,我可能會使用「內容類型」,而不是「接受」頭您可以以相同的方式使用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))