我们中的许多人需要执行 Web 服务以从服务器获取数据以用于我们的 android 应用程序。我使用 RESTful api 开发了一个简单的 android api 客户端。该库非常易于使用,并且支持四种 Http 方法(GET、POST、PUT 和 DELETE)的简单 Http 请求。
使用这个库,您可以构建一个 http 请求并处理它的响应结果,分为五类:
- 信息响应。
- 成功响应。
- 客户端错误响应。
- 服务器错误响应。
- 异常响应。
在答案中有一个关于如何使用该库的简单示例。
谢谢。
我们中的许多人需要执行 Web 服务以从服务器获取数据以用于我们的 android 应用程序。我使用 RESTful api 开发了一个简单的 android api 客户端。该库非常易于使用,并且支持四种 Http 方法(GET、POST、PUT 和 DELETE)的简单 Http 请求。
使用这个库,您可以构建一个 http 请求并处理它的响应结果,分为五类:
在答案中有一个关于如何使用该库的简单示例。
谢谢。
这是 GitHub 上库的链接
https://github.com/jorcad/AndroidApiClient
您可以将 jar (android-api-client.jar) 文件从 bin 文件夹导入到您的项目中。
使用此库,您可以指定以下参数:
关于如何构建您的第一个 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());
}
});