我正在 Android Studio 中学习 android 开发。我使用 Android-query 库进行简单的 HTTP 调用,以从我的 Grails Web 应用程序中获取 JSON 数据。在我的 android UI 中,我有一个按钮和一个 editText。我希望在单击按钮后显示从服务器返回的 JSON 字符串。这是代码:
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 网址并获取正确的 JSON 数据:
{
name: "abc"
}
如果我在虚拟设备中运行 android 应用程序,我只会收到“网络错误”消息。返回的 JSON 对象为空。
如果我使用相同的 android 代码访问http://ip.jsontest.com来代替我的 Grails 网址。我可以在没有网络错误的情况下返回正确的 json 数据。为什么?
谁能给我一些建议让 Android-query 与 Grails web 一起工作?