如何正确设置Rhomobile API调用的请求标头?

问题描述:

环境:如何正确设置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'时,响应是一样的。

在此先感谢。

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))