簡體   English   中英

從Android本地調用NetBeans IDE生成的RESTful Web服務?

[英]Locally call RESTful Web Service generated by NetBeans IDE from Android?

因此NetBeans IDE可以從數據庫生成RESTful Web服務(表已打包到實體類中)。 我遵循了本教程 ,並且RESTful Web服務已成功生成。

現在,我想通過我的Android應用程序致電,但到目前為止還沒有運氣。 我使用了“ Android異步Http客戶端,適用於Android的基於回調的Http客戶端庫”

所以這是我的代碼片段:

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方法:

 @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”)批注,並對方法進行了一些修改。

請說明一下,我對此還很陌生,所以我沒有頭緒。 我知道這是由於一些非常愚蠢的錯誤引起的,但請提供幫助。 該程序在以下位置停止

“發生了意外錯誤![最常見的錯誤:設備可能未連接到Internet或遠程服務器未啟動並正在運行]”

很明顯,我無法很好地連接這兩個程序。

您的HTTP URL是“ http:// localhost:8080 / ...”,即,它希望到達運行在Android設備上的服務器。 如果您的IDE /服務正在工作站上運行,則:

  • 如果您在Genymotion模擬器上運行應用程序,請使用10.0.3.2而不是localhost
  • 如果您在SDK模擬器上運行應用程序,請使用10.0.2.2而不是l ocalhost
  • 如果您在真實設備上運行該應用程序,請替換工作站的IP地址,並確保該設備和工作站在同一網絡上。

參考文獻:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM