阅读338 返回首页    go 微信


Android SDK 使用指南__SDK_API 网关-阿里云

1. 前言

本文档介绍了API网关产品Android SDK的使用方式。

该SDK适用于在移动端调用已接入API网关的私有、公开API以及目前在数据市场上售卖的API。


2. 安装API网关 Android SDK

2.1 下载SDK

在API网关控制台左侧找到SDK及示例菜单,点击前往SDK下载页面。

根据页面提示查看使用手册或者前往下载SDK。需要注意区分代码示例及SDK,代码示例适用于不准备使用SDK的用户参考代码完成API调用工作,而SDK可以帮助用户简化API调用工作。

SDK

点击前往下载SDK链接后,浏览器会打开新页面,该页面为阿里云移动服务的SDK下载页面。在下载页面上勾选API网关,然后点击下载Android版按钮,根据页面提示下载到API网关的Android SDK。

download

2.2 在工程中依赖SDK

解压下载到的SDK压缩包,将解压出的*.jar文件放到Android工程的指定目录中,以Android Studio为例:

dependency

alicloud-android-apigateway-sdk-version.jar放到应用工程的libs目录下,并在对应工程的build.gradle文件中添加如下内容:

  1. dependencies {
  2. // 添加API网关android依赖, 从下载的sdk.zip中找到jar并拷贝到当前工程的libs目录下。根据实际文件名填写,version仅为示意。
  3. compile files('libs/alicloud-android-apigateway-sdk-version.jar')
  4. // 添加三方HTTP请求实现,建议使用3.4.1及以上版本
  5. compile 'com.squareup.okhttp3:okhttp:3.4.1'
  6. }

3. 应用程序初始化

在使用Android SDK调用API前,需要对SDK的上下文进行一些初始化配置,如权限声明、传递应用上下文、访问控制等。

3.1 权限声明

AndroidManifest.xml中添加如下内容:

  1. <uses-permission android:name="android.permission.INTERNET" />

3.2 AppKey配置

3.2.1 非安全方式配置AppKey及AppSecret

强烈建议只在开发测试阶段使用非安全的方式配置AppKey及AppSecret。强烈建议在控制台中为移动应用创建新的应用,不和其他端上应用共用AppKey。

从控制台中获取到应用的AppKey及AppSecret,并在AndroidManifest.xml中添加如下内容:

  1. <application>
  2. <meta-data android:name="com.alibaba.apigateway.appKey" android:value="appKey" />
  3. <meta-data android:name="com.alibaba.apigateway.appSecret" android:value="appSecret" />
  4. </application>
3.2.2 较安全地存储AppKey及AppSecret

请使用阿里云提供的移动安全产品,点击查看产品介绍

通过使用安全存储功能将AppKey及AppSecret较安全地存储在移动应用端,点击查看使用文档。请按照上述使用文档联系移动安全产品将API网关所需要AppKey和AppSecret存放在安全图片中。

用户只需要按照上述文档依赖移动安全SDK并正确放置安全图片,API网关会自动从安全图片中获取所需数据。

3.3 SDK初始化

在应用初始化的时候添加SDK初始化代码。以下以MainActivity为例:

  1. package ...;
  2. import ...;
  3. public class MainActivity extends AppCompatActivity {
  4. @Override
  5. protected void onCreate() {
  6. super.onCreate();
  7. // 初始化API网关SDK
  8. initGatewaySdk();
  9. }
  10. private void initGatewaySdk() {
  11. // 初始化API网关
  12. ApiGatewayClient.init(getApplicationContext(), false);
  13. }
  14. }

注意,如果SDK依赖的AppKey及AppSecret已通过移动安全服务进行安全存储,请使用以下初始化代码:

  1. ApiGatewayClient.init(getApplicationContext(), true);

4. SDK使用示例

4.1 调用API

同步调用:

以阿里云云市场售卖的阿里短信服务为例。

  1. // 获取服务
  2. RpcService rpcService = ApiGatewayClient.getRpcService();
  3. ApiRequest apiRequest = new ApiRequest();
  4. // 设置请求地址、Path及Method
  5. apiRequest.setAddress("https://sms.market.alicloudapi.com");
  6. apiRequest.setPath("/singleSendSms");
  7. apiRequest.setMethod(HttpMethod.GET);
  8. // 按照文档设置Query参数,支持设置Header参数、Form形式Body及二进制形式Body
  9. apiRequest.addQuery("ParamString", "demo");
  10. apiRequest.addQuery("RecNum", "demo");
  11. apiRequest.addQuery("SignName", "demo");
  12. apiRequest.addQuery("TemplateCode", "demo");
  13. // 设置超时时间及其他
  14. apiRequest.setTimeout(3000);
  15. try {
  16. ApiResponse apiResponse = rpcService.call(apiRequest);
  17. // 处理apiResponse,以下为常用方法
  18. // RequestId
  19. // apiResponse.getRequestId();
  20. // Code
  21. // apiResponse.getCode();
  22. // ErrorMessage
  23. // apiResponse.getErrorMessage();
  24. // Response Content
  25. // apiResponse.getStringBody();
  26. // Response Headers
  27. // apiResponse.getHeaders();
  28. } catch (ApiInvokeException e) {
  29. // 处理异常
  30. }

异步回调:

以阿里云云市场售卖的身份证识别为例。

  1. // 获取服务
  2. RpcService rpcService = ApiGatewayClient.getRpcService();
  3. final ApiRequest apiRequest = new ApiRequest();
  4. // 设置请求地址、Path及Method
  5. apiRequest.setAddress("https://dm-51.data.aliyun.com");
  6. apiRequest.setPath("/rest/160601/ocr/ocr_idcard.json");
  7. apiRequest.setMethod(HttpMethod.POST);
  8. // 按照文档设置二进制形式Body,支持设置Query参数、Header参数、Form形式Body
  9. apiRequest.setStringBody("JSON格式参数");
  10. // 设置支持自签等形式的证书,如果服务端证书合法请勿设置该值,仅在开发测试或者非常规场景下设置。
  11. apiRequest.setTrustServerCertificate(true);
  12. // 设置超时
  13. apiRequest.setTimeout(10000);
  14. rpcService.call(apiRequest, new ApiResponseCallback() {
  15. @Override
  16. public void onSuccess(ApiResponse apiResponse) {
  17. // 处理apiResponse
  18. }
  19. @Override
  20. public void onException(ApiInvokeException e) {
  21. // 处理异常
  22. }
  23. });

最后更新:2016-11-24 11:23:49

  上一篇:go TrafficControlItem__数据类型_API_API 网关-阿里云
  下一篇:go Android SDK 使用手册__使用SDK调用已开放API_SDK_API 网关-阿里云