0

我们中的许多人需要执行 Web 服务以从服务器获取数据以用于我们的 android 应用程序。我使用 RESTful api 开发了一个简单的 android api 客户端。该库非常易于使用,并且支持四种 Http 方法(GET、POST、PUT 和 DELETE)的简单 Http 请求。

使用这个库,您可以构建一个 http 请求并处理它的响应结果,分为五类:

  1. 信息响应。
  2. 成功响应。
  3. 客户端错误响应。
  4. 服务器错误响应。
  5. 异常响应。

在答案中有一个关于如何使用该库的简单示例。

谢谢。

4

1 回答 1

0

这是 GitHub 上库的链接

https://github.com/jorcad/AndroidApiClient

您可以将 jar (android-api-client.jar) 文件从 bin 文件夹导入到您的项目中。

使用此库,您可以指定以下参数:

  • 设置调用的基本 Uri。
  • 设置 Http 方法。
  • 添加路径、参数和标题。
  • 设置内容类型。
  • 设置实体/内容/正文。
  • 设置连接和套接字超时。
  • 设置连接和套接字超时重试计数。
  • 设置连接或套接字超时时是否启用重试​​。
  • 以三种方式执行请求:块、线程或异步任务。
  • 设置处理程序以获取不同响应代码的结果:Informal、Successful、ClientError 和 ServerError。
  • 获取响应实体(响应代码、内容、内容长度和标头)。

关于如何构建您的第一个 Api 调用并处理结果的示例:

    ApiClient apiClient = new ApiClientBuilder()
    .setBaseUri("http://localhost:8181")
    .addPath("WebServices")
    .addPath("rest")
    .addPath("accout")
    .addPath("create")
    .addParam("UserName", "user123")
    .addParam("FirstName", "Mike")
    .addParam("LastName", "Norm")
    .addParam("Password", "p@ssw0rd")
    .addParam("email", "mike@test.com")
    .addHeader("ContentType", "application/xml")
    .setTextContent("<Root><Test>this is test</Test></Root>")
    .setMethod(Method.POST)
    .setConnectionTimeout(6000)
    .setSocketTimeout(6000)
    .build();

    //execute and handle the result
    apiClient.executeOnAsyncTask(new ApiClientHandler()
    {

        @Override
        public void onInformational(Status status, String responseStatus, ResponseEntity entity)
        {
            Log.i("ApiClient", "Response Content code: " + status.code());
            Log.i("ApiClient", "Response Content Status: " + responseStatus);
            Log.i("ApiClient", "Response Content Lenght: " + entity.getContentLength());
            Log.i("ApiClient:", "Response Content as string: " + entity.getResponseContentAsString());

        }

        @Override
        public void onSuccessful(Status status, String responseStatus, ResponseEntity entity)
        {
            Log.v("ApiClient", "Response Content code: " + status.code());
            Log.v("ApiClient", "Response Content Status: " + responseStatus);
            Log.v("ApiClient", "Response Content Lenght: " + entity.getContentLength());
            Log.v("ApiClient:", "Response Content as string: " + entity.getResponseContentAsString());

        }

        @Override
        public void onClientError(Status status, String responseStatus, ResponseEntity entity)
        {
            Log.v("ApiClient", "Response Content code: " + status.code());
            Log.v("ApiClient", "Response Content Status: " + responseStatus);
            Log.v("ApiClient", "Response Content Lenght: " + entity.getContentLength());
            Log.v("ApiClient:", "Response Content as string: " + entity.getResponseContentAsString());

        }

        @Override
        public void onServerError(Status status, String responseStatus, ResponseEntity entity)
        {
            Log.e("ApiClient", "Response Content code: " + status.code());
            Log.e("ApiClient", "Response Content Status: " + responseStatus);
            Log.e("ApiClient", "Response Content Lenght: " + entity.getContentLength());
            Log.e("ApiClient:", "Response Content as string: " + entity.getResponseContentAsString());

        }

        @Override
        public void onRedirection(Status status, String responseStatus, ResponseEntity entity)
        {
            Log.i("ApiClient", "Response Content code: " + status.code());
            Log.i("ApiClient", "Response Content Status: " + responseStatus);
            Log.i("ApiClient", "Response Content Lenght: " + entity.getContentLength());
            Log.i("ApiClient:", "Response Content as string: " + entity.getResponseContentAsString());

        }

        @Override
        public void onException(ExceptionStatus exceptionStatus, Exception e)
        {
            Log.e("ApiClient", "Exception code: " + exceptionStatus.code());
            Log.e("ApiClient", "Exception: " + e.getMessage());
        }

    });
于 2013-09-03T22:14:42.887 回答