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 => 网址,
    :标题=> {
    '接受'=>'应用程序/json',
    '接受编码'=>'gzip,deflate,sdch',
    '接受语言'=>'en-US,en;q=0.8'
    },
    :callback => 回调,
    :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' 时,响应是相同的。

提前致谢。

4

1 回答 1

0

Rhodes 使用 libcURL 来实现框架 v3.5 中的 AsyncHTTP API,这可以在源代码中看到。

因此,无论在 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 中对此进行测试,现在您可以使用相同的方式使用 Network 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 回答