Android查询ajax可以';无法从Grails web获取json结果
我正在安卓工作室学习安卓开发。我使用Android查询库进行简单的HTTP调用,从GrailsWeb应用程序中获取JSON数据。在我的android用户界面中,我有一个按钮和一个编辑文本。我希望单击按钮后显示从服务器返回的JSON字符串。代码如下:Android查询ajax可以';无法从Grails web获取json结果,android,json,grails,android-query,Android,Json,Grails,Android Query,我正在安卓工作室学习安卓开发。我使用Android查询库进行简单的HTTP调用,从GrailsWeb应用程序中获取JSON数据。在我的android用户界面中,我有一个按钮和一个编辑文本。我希望单击按钮后显示从服务器返回的JSON字符串。代码如下: public static class PlaceholderFragment extends Fragment { private AQuery aq; public PlaceholderFragment() { }
public static class PlaceholderFragment extends Fragment {
private AQuery aq;
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
aq = new AQuery(getActivity(), rootView);
aq.id(R.id.button1).clicked(this, "onButtonClick");
return rootView;
}
public void onButtonClick(View view) {
String url = "http://localhost:8090/MyProject/main/index";
aq.ajax(url, JSONObject.class, this, "jsonCallback");
}
public void jsonCallback(String url, JSONObject json, AjaxStatus status){
if(json != null){
aq.id(R.id.editText).text(json.toString());
}else{
aq.id(R.id.editText).text(status.getMessage());
}
}
}
在Grails方面,我只是直接返回一个json对象:
class MainController {
def re = ['name' : 'abc']
def index() {
render re as JSON
}
}
我可以在浏览器中访问我的Grails web url并获得正确的JSON数据:
{
name: "abc"
}
如果我在虚拟设备中运行android应用程序,我只会收到“网络错误”消息。返回的JSON对象为空
如果我使用相同的android代码来访问Grails web url。我可以得到正确的json数据返回没有网络错误。为什么?
有谁能给我一些建议,让Android query与Grails web配合使用吗?最后,我找到了原因:
要从Android Emulator访问PC上的本地主机web应用程序,我们不能使用本地主机作为服务器地址。我将URL更改为“http://10.0.3.2:8090/MyProject/main/index“(我使用的是Genymotion Android Emulator),它可以工作。如果您使用的是Genymotion Android Emulator,那么URL应该是“//192.168.56.1:8090/MyProject/main/index”,这是您的本地ip地址,或者如果您使用的是默认Emulator,那么URL应该是“//192.168.56.1:8090/MyProject/main/index”“//10.0.0.2:8090/MyProject/main/index”如果android使用浏览器的本机ajax功能/API,这可能是一个CORS问题。查看以下grails插件:谢谢你的回复。但是我不明白为什么相同的代码可以访问,如果是CORS问题,那么就可以得到json结果?我想我需要在Garils方面做些什么。但不知道如何做。