【问题标题】:Where to get a simple android API Client?哪里可以获得一个简单的 android API 客户端?
【发布时间】:2013-09-03 22:14:42
【问题描述】:

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

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

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

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

谢谢。

【问题讨论】:

    标签: java android api httpclient


    【解决方案1】:

    这是 GitHub 上库的链接

    https://github.com/jorcad/AndroidApiClient

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

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

    • 设置调用的基本 Uri。
    • 设置 Http 方法。
    • 添加路径、参数和标题。
    • 设置内容类型。
    • 设置实体/内容/正文。
    • 设置连接和套接字超时。
    • 设置连接和套接字超时重试次数。
    • 设置连接或套接字超时时是否启用重试 发生。
    • 以三种方式执行请求:块、线程或异步任务。
    • 设置处理程序以获取不同响应代码的结果: 信息性、成功、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());
            }
    
        });
    

    【讨论】:

      猜你喜欢
      • 2019-09-30
      • 1970-01-01
      • 2013-09-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-03
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多