这是 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());
}
});