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

时间:2013-09-16 13:16:55

标签: api get rhomobile

环境:

Windows Server 2012 Standard
rhodes-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粘贴到Fiddler中似乎有效。当我删除'Accept-Encoding'=>'gzip,deflate,sdch'时,响应是相同的。

提前致谢。

1 个答案:

答案 0 :(得分:0)

Rhodes使用libcURL在框架的v3.5中实现AsyncHTTP API,可以在sourcecode中看到。

因此,无论libcURL中可以做什么,在ASyncHTTP中都可以这样做。

在您的特定情况下,我可能会使用“Content-Type”而不是“Accept”标题:

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