
# Android SDK使用说明
#### 操作场景
使用Android语言调用APP认证的API时，您需要先获取SDK，然后新建工程，最后参考API调用示例调用API。
#### 前提条件
- 已获取API的调用信息，具体请参见[开发准备](https://support.huaweicloud.com/devg-roma/apic-dev-190216004.html)。
- 已安装Android开发语言环境，具体请参见[开发准备](https://support.huaweicloud.com/devg-roma/apic-dev-190216004.html)。
 
#### 获取SDK
**旧版界面**：登录ROMA Connect实例控制台，在"服务集成 APIC \> API调用"的"SDK"页签中下载SDK。
**新版界面**：登录ROMA Connect实例控制台，在"服务集成 APIC \> 凭据管理"的"SDKs"页签中下载SDK。
解压后目录结构如下：
| 名称                | 说明                 |
|:---|:---|
| app\\             | 安卓工程代码             |
| gradle\\          | gradle相关文件         |
| build.gradle      | gradle配置文件         |
| gradle.properties | gradle配置文件         |
| settings.gradle   | gradle配置文件         |
| gradlew           | gradle wrapper执行脚本 |
| gradlew.bat       | gradle wrapper执行脚本 |
   
#### 打开工程
1. 打开Android Studio，选择"File \> Open"。 在弹出的对话框中选择解压后的SDK路径。
   
2. 打开工程后，目录结构如下。
   图1工程目录结构   
   ![](https://support.huaweicloud.com/devg-roma/zh-cn_image_0219606348.png) 
 
#### 调用API示例
1. 在Android工程中的"app/libs"目录下，加入SDK所需jar包。其中jar包必须包括：
   - java-sdk-core-x.x.x.jar
   
   - joda-time-2.10.jar
    
2. 在"build.gradle"文件中加入okhttp库的依赖。
   在"build.gradle"文件中的"dependencies"下加入"implementation 'com.squareup.okhttp3:okhttp:3.14.2'"。
   ```
   dependencies {    
       ...
       ...
       implementation 'com.squareup.okhttp3:okhttp:3.14.3'
   }
   ```
   
3. 创建request，输入API所授权凭据的Key和Secret，并指定方法名、请求url和body，可参考[获取API的调用信息](https://support.huaweicloud.com/devg-roma/apic-dev-190216004.html#apic-dev-190216004__section17143919101020)获取。
   ```
   Request request = new Request();
   try {
   // Directly writing AK/SK in code is risky. For security, encrypt your AK/SK and store them in the configuration file or environment variables. 
   // In this example, the AK/SK are stored in environment variables for identity authentication. Before running this example, set environment variables HUAWEICLOUD_SDK_AK and HUAWEICLOUD_SDK_SK. 
   request.setKey(System.getenv("HUAWEICLOUD_SDK_AK"));
   request.setSecrect(System.getenv("HUAWEICLOUD_SDK_SK"));
   request.setMethod("POST");
   request.setUrl("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1");
   request.addQueryStringParam("name", "value");
   request.addHeader("Content-Type", "text/plain");
   request.setBody("demo");
   } catch (Exception e) {
   e.printStackTrace();
   return;
   }
   ```
   
4. 对请求进行签名，生成okhttp3.Request对象来访问API。
   ```
   okhttp3.Request signedRequest = Client.signOkhttp(request);
   OkHttpClient client = new OkHttpClient.Builder().build();
   Response response = client.newCall(signedRequest).execute();
   ```
   
 
