从Android本地调用NetBeans IDE生成的RESTful Web服务? [英] Locally call RESTful Web Service generated by NetBeans IDE from Android?

查看:124
本文介绍了从Android本地调用NetBeans IDE生成的RESTful Web服务?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此NetBeans IDE可以从数据库生成RESTful Web服务(表已打包到实体类中).我遵循了教程,并且RESTful Web服务已成功生成.

so the NetBeans IDE can generate RESTful Web Service from database (the table has been packed into an entity class). I followed this tutorial and the RESTful Web Service has been generated successfully.

现在,我想从我的Android应用中致电,但到目前为止还没有运气.我使用了"Android异步Http客户端 适用于Android的基于回调的Http客户端库"

Now, I would like to call from my Android app, but no luck so far. I used "Android Asynchronous Http Client A Callback-Based Http Client Library for Android"

这是我的代码段:

customActionBarView.findViewById(R.id.actionbar_done).setOnClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        // "Done"
                        String id = generateId();
                        EditText number = (EditText) findViewById(R.id.caller_phone_number);
                        EditText information = (EditText) findViewById(R.id.caller_information);

                        checkAvailability(id, number.getText().toString(), information.getText().toString());

                        finish();
                    }
                });

和这个:

 public void processWebServices(RequestParams params) {
        AsyncHttpClient client = new AsyncHttpClient();
        client.post("http://localhost:8080/AndroidRESTful/com.erikchenmelbourne.entities.caller/create", params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] response) {
                try {
                    JSONObject obj = new JSONObject(response.toString());
                    if (obj.getBoolean("status")) {
                        setDefaultValues();
                        Toast.makeText(getApplicationContext(), "Information has been sent!", Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getApplicationContext(), obj.getString("error_msg"), Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    Toast.makeText(getApplicationContext(), "Error Occured [Server's JSON response is invalid]!", Toast.LENGTH_LONG).show();
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
                if (i == 404) {
                    Toast.makeText(getApplicationContext(), "Requested resource not found", Toast.LENGTH_LONG).show();
                } else if (i == 500) {
                    Toast.makeText(getApplicationContext(), "Something went wrong at server end", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(getApplicationContext(), "Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

这是NetBeans IDE生成的POST方法:

and here is NetBeans IDE generated POST method:

 @Path("/create") 
    @POST
    @Consumes({"application/xml", "application/json"})
    public void create(@QueryParam("id") int id, @QueryParam("number") String number, @QueryParam("information") String information) {
    Caller entity = new Caller (id, number, information);
        super.create(entity);
    }

我添加了@Path("/create")批注,并对方法进行了一些修改.

I added the @Path("/create") annotation and modified the method a bit.

请说明一下,我对此还很陌生,所以我没有头绪.我知道这是由于一些非常愚蠢的错误引起的,但请提供帮助.该程序在

Please shed some light, I am fairly new to this so I don't have a clue. I know it is due to some very silly mistakes but please help. The program stops at

发生意外错误![最常见的错误:设备可能没有 连接到Internet或远程服务器的服务器未启动并正在运行]"

"Unexpected Error occcured! [Most common Error: Device might not be connected to Internet or remote server is not up and running]"

.很明显,我无法很好地连接这两个程序.

. So obvious I couldn't connect the two programs well.

推荐答案

您的HTTP URL为" http://localhost:8080 / ...",即它希望到达运行在Android设备上的服务器.如果您的IDE/服务正在您的工作站上运行,则:

Your HTTP URL is "http://localhost:8080/..." i.e. it expects to reach a server running on the Android device. If your IDE/service is running on your workstation then:

  • 如果您正在Genymotion模拟器上运行应用程序,请使用10.0.3.2而不是 localhost
  • 如果您在SDK仿真器上运行该应用,请使用10.0.2.2而不是l ocalhost
  • 如果您是在真实设备上运行应用程序,则替换IP 工作站的地址,并确保设备和工作站在同一网络上.
  • If you're running the app on the Genymotion emulator use 10.0.3.2 instead of localhost
  • If you're running the app on the SDK emulator use 10.0.2.2 instead of localhost
  • If you're running the app on a real device then substitute the IP address of your workstation and make sure the device and workstation are on the same network.

参考:

  • How to access localhost from a Genymotion android emulator
  • Emulator Networking

这篇关于从Android本地调用NetBeans IDE生成的RESTful Web服务?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆