使用Crosswalk的Android设备上的奇怪的$ http GET响应

时间:2015-07-06 08:46:45

标签: javascript angularjs api cordova cordova-plugins

我试图使用angularjs从API获取json格式的一些数据。一切都在iOS和浏览器上完美运行,但我在Android设备上得到了一个奇怪的回应。请求是这样的:

$http({
    url: baseUrl, 
    method: "GET",
    headers: {
          "Content-Type": "application/json"
    },
    params: {
          authKey: myAuthKey,
          id: myId,
          format: "json"
    }
})
.success(function(data, status){
     console.log("Success", data); // Here the output is different on Android
     orderData(data);
})
.error(function(data, status){
     console.log("Error");
     console.log(data,status);
});

请求始终成功,并在iOS和桌面浏览器中按预期返回对象。但是当我在Android设备上记录数据时,我得到以下输出:

>     Success <html>
>     <head>
>     </head>
>     <body>
>     <script>
>     var wwwurl='www.mywifiext.com/welcome.htm';
>     function check_mobile_device()
>     {
>     if(navigator.userAgent.indexOf("iPhone") != -1)
>     return 1;
>     else if(navigator.userAgent.indexOf("Android") != -1)
>     return 1;
>     else if(navigator.userAgent.indexOf("Windows Phone") != -1)
>     return 1;
>     else if(navigator.userAgent.indexOf("iPad") != -1 )
>     return 0;
>     else
>     return 0;
>     }
>     if(check_mobile_device() == '1')
>     top.location.href="http://www.mywifiext.net/mobile_welcome.htm";
>     else
>     top.location.href="http://www.mywifiext.net/welcome.htm";
>     </script>
>     </body>
>     </html>

这是什么,一些奇怪的HTML响应引用一些路由器?我已经在不同的wifi网络上进行了测试,它与设备的3G连接相同。

我最近在我的项目中添加了人行横道并使用了cordova-plugin-whitelist,它可能与此有关吗?或者这可能是API方面的错误?

编辑:恢复默认浏览器使其正常工作。但为什么?如何让它与Crosswalk一起使用?

2 个答案:

答案 0 :(得分:0)

尝试

String url = "http://my-json-feed";

JsonObjectRequest jsObjRequest = new JsonObjectRequest
    (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

@Override
public void onResponse(JSONObject response) {
    Log.v("Response: ", response.toString());
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
    // TODO Auto-generated method stub

}
});

答案 1 :(得分:0)

与您的代码无关。

您处于开放的WiFi网络中,需要通过HTML页面进行身份验证。当您通过HTTP请求资源并且尚未在WiFi接入点上进行身份验证时,您将被重定向到欢迎页面。

可能的解决方案:

打开网络浏览器和任何网页。您将被重定向到欢迎页面(您使用$http.get()下载的页面)。填写您的网络访问数据并接受条件。在那之后,你的Cordova应用程序应该按照你期望的方式工作。

对于您的用户:

也许某种错误处理可以帮助您的用户遇到类似的情况。您可以添加一个处理非JSON响应的http拦截器,并告诉用户他们可能必须检查他们的网络并登录到接入点。