如何通过android中的ajax调用本地restful web服务?

时间:2013-02-20 06:58:52

标签: android ajax rest

我有宁静的网络服务。我想从android中的ajax(使用webview)获取当地的json。 这是app android

中htmt文件中的代码ajax

function Get(){            $ .ajax({

            url: "[http://localhost:31132/api/Customer][1]",
            type: "GET",
            dataType: "json",                
            success: function (data) {                    
                $('#d').append("sucess");
            },
            error: function (request, status, error) {                  
                $('#d').append(error);
            }
        });
    }

此代码在浏览器上运行良好。但它不能在android中运行。模拟器android使用API​​级别10.

谢谢:D

2 个答案:

答案 0 :(得分:0)

Quote

  

默认情况下,WebView不提供类似浏览器的小部件,不会启用JavaScript并忽略网页错误。

你做过:

webview.getSettings().setJavaScriptEnabled(true);

更新如果Web服务未按标准Android浏览器运行,那么它不会与WebView一起运行就不足为奇了。虽然问题仍然是您是否将浏览器配置为将自己标识为Android或“桌面”。我没有详细研究过您发布的视频,但我得到的印象是您使用某些(Microsoft?)框架自己编写了Web服务。关键问题是:此框架如何处理Android请求,例如:关于它发送的用户代理(浏览器标识)。一般来说,Android上的JavaScript支持相当不错,编写良好的AJAX库可以处理各种平台。因此,我要做的第一件事就是

  1. 尝试将UserAgend标识设置为伪造桌面浏览器的内容,然后重试。如果这不起作用,
  2. 在给定配置中确定Web服务实际向客户端传递哪些AJAX文件是很有价值的。最后,如果这不起作用,
  3. 查看WebView发出的错误消息是明智的。

答案 1 :(得分:0)

在Web服务URL中,尝试使用10.0.2.2而不是localhost。 localhost或127.0.0.1指向模拟器/ android设备,而10.0.2.2是主机环回接口的特殊别名(即开发计算机上的127.0.0.1)。

尝试使用http://10.0.2.2:31132代替http://localhost:31132