在 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 秒。网站网址就像,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):第一次尝试10秒后同步请求超时,URL:... E/WebUrlLoaderClient(924):第2次尝试10秒后同步请求超时,URL:。 ..
记录第 3 行后,ajax 请求将就绪状态更改为 4,响应状态更改为 0 而不是 200,响应文本也为空。这意味着它在 30 秒后超时(3 次重试,每次 10 秒)。
我浏览了Android开源的WebUrlLoaderClient.cpp,发现超时和重试次数分别固定为10和3。
同样的请求在异步模式下工作正常。
请让我知道我是否在此代码中做错了什么,或者是否有任何其他方法可以执行响应时间超过 30 秒的同步 ajax 调用。