webview中的同步Ajax超时

在从Andriod的webview中执行从javascript到跨域网站的同步ajax请求(GET)时,请求失败。 代码如下,

var jqxhr = $.ajax({ url: url, cache: false, dataType: 'json', type: 'GET', async: false }) .done(function ( data ) { fnSuccess(JSON.stringify(data)); }); jqxhr.fail(function(jqXHR, textStatus, errorThrown) { alert("Failed with:"+textStatus+"--"+errorThrown+"--"+jqXHR.status+"--"+jqXHR.responseText); }); 

该网站应该以JSON格式返回数据,平均响应时间约为90秒。 网站url如https://abc.com/abc/123?a=1&b=2&c=3

在Ajax请求启动时显示以下日志(adb logcat),E / WebUrlLoaderClient(924):第0次尝试后10秒后同步请求超时,URL: https ://abc.com/abc/123 ?a = 1&b = 2&c = 3 E / WebUrlLoaderClient(924):同步请求在第1次尝试10秒后超时,URL:… E / WebUrlLoaderClient(924):同步请求在第2次尝试10秒后超时,URL :. ..

记录第3行后,ajax请求将就绪状态更改为4,响应状态更改为0而不是200,响应文本也为空。 这意味着它在30秒后超时(每次10秒重复3次)。

我从Android开源处浏览了WebUrlLoaderClient.cpp,发现超时和重试次数分别固定为10和3。

同样的请求在异步模式下工作正常。

请告诉我这段代码是否有任何错误,或者是否有其他方法可以进行同步ajax调用,响应时间超过30秒。

我担心你无法为同步ajax调用设置自定义超时…你必须异步并将你的下一个放入.done和.fail ajax调用。

看到这里: 登录为Iphone而不是android 。