• 沒有找到結果。

2.2 APP 认证开发

2.2.2 Java SDK 使用说明

操作场景

使用Java语言调用APP认证的API时,您需要先获取SDK,然后新建工程或导入工程,

最后参考调用API示例调用API。

本章节以IntelliJ IDEA 2018.3.5版本为例介绍。

2-3 调用流程

前提条件

● 已获取API的域名、请求url、请求方法、集成应用的Key和Secret(或客户端的 AppKey和AppSecret)等信息,具体参见认证前准备。

● 获取并安装2018.3.5或以上版本的IntelliJ IDEA,如果未安装,请至IntelliJ IDEA 官方网站下载。

● 已安装Java Development Kit 1.8.111或以上版本,如果未安装,请至Oracle官方 下载页面下载。

获取 SDK

请登录ROMA Connect实例控制台,在“服务集成 APIC > API调用”页面中下载 SDK。解压后目录结构如下:

名称 说明

libs\ SDK依赖库。

libs\java-sdk-core-x.x.x.jar SDK包。

src\com\apig\sdk\demo

\Main.java 使用SDK签名请求示例代码。

src\com\apig\sdk\demo

\OkHttpDemo.java src\com\apig\sdk\demo

\LargeFileUploadDemo.jav a

.classpath Java工程配置文件。

.project

如果使用maven构建,SDK包中“java-sdk-core-x.x.x.jar”的maven仓库地址为

https://mirrors.huaweicloud.com/repository/maven/huaweicloudsdk/,配置

maven源的方法可参见https://bbs.huaweicloud.com/forum/forum.php?

mod=viewthread&tid=1779。

加入java-sdk-core依赖的maven配置项为:

<dependency>

<groupId>com.huawei.apigateway</groupId>

<artifactId>java-sdk-core</artifactId>

<version>3.0.12</version>

</dependency>

导入工程

步骤1 打开IntelliJ IDEA,在菜单栏选择“Import Project”。

弹出“Select File or Directory to Import”对话框。

步骤2 在弹出的对话框中选择解压后的SDK路径,单击“OK”。

步骤3 “Import project from external model”选择“Eclipse”,单击“Next”,进入下一 页后保持默认连续单击“Next”,直到“Please select project SDK”页面。

2-4 Import Project

步骤4 单击“Finish”,完成工程导入。

2-5 Finish

步骤5 完成导入后,目录结构如下图。

2-6 目录结构

----结束

新建工程

步骤1 打开IntelliJ IDEA,在菜单栏选择“Create New Project”。

弹出“New Project”对话框。

步骤2 在右侧栏中选择“Java”,单击“Next”,进入下一页。

2-7 New Project

步骤3 保持默认继续单击“Next”,进入下一页,自定义“Project name”,并选择创建工 程所在本地目录“Project location”。

2-8 新建工程

步骤4 导入Java SDK的“jar”文件。

1. 选择“File > Project Structure”,弹出“Project Structure”对话框。

2-9 导入 jar 文件

2. 在“Project Structure”对话框中选择“Libraries > + >Java”,界面弹出“Select Library Files”对话框。

3. 选择SDK所在目录中“\libs”目录下所有以“jar”结尾的文件,单击“ok”。

2-10 选择 jar 文件

4. 选择步骤3已创建的工程,单击“ok”。

2-11 选择工程

5. 填写jar文件所在目录的名称,单击“Apply > OK”。

2-12 jar 文件目录

6. 完成jar文件导入,导入后目录结构如下图。

2-13 目录结果

步骤5 新建“Package”及“Main”文件。

1. 选择“src”,单击鼠标右键,选择“New > Package”。

2-14 新建 Package

2. 在“Name”中输入“com.apig.sdk.demo”。

2-15 设置 Package 的名称

3. 单击“OK”,完成“Package”的创建。

4. 选择“com.apig.sdk.demo”,单击鼠标右键,选择“New > Java Class”,在

“Name”中输入“Main”单击“OK”,完成“Main”文件创建。

2-16 新建 Class

5. 配置Class。

创建完成后,打开“Main”文件,添加“public static void main(String[]

args)”。

2-17 设置 Class 的配置

步骤6 完成工程创建后,最终目录结构如下。

2-18 新建工程的目录结构

“Main.java”无法直接使用,请根据实际情况参考调用API示例输入所需代码。

----结束

调用 API 示例

说明

● 示例演示如何访问发布的API。

● 您需要在APIC的管理控制台自行创建和发布一个API,可以选择Mock模式。

● 示例API的后端为打桩的HTTP服务,此后端返回一个“200”响应码及“Congratulations, sdk demo is running”消息体。

步骤1 在“Main.java”中加入以下引用。

import java.io.IOException;

import javax.net.ssl.SSLContext;

import org.apache.http.Header;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.methods.HttpRequestBase;

import org.apache.http.conn.ssl.AllowAllHostnameVerifier;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.conn.ssl.SSLContexts;

import org.apache.http.conn.ssl.TrustSelfSignedStrategy;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import com.cloud.apigateway.sdk.utils.Client;

import com.cloud.apigateway.sdk.utils.Request;

步骤2 创建request,过程中需要用到如下参数。

● AppKey:通过认证前准备获取。根据实际情况填写,示例代码使用

“4f5f626b-073f-402f-a1e0-e52171c6100c”作为样例。

● AppSecret:通过认证前准备获取。根据实际情况填写,示例代码使用“******”作 为样例。

● Method:请求的方法名。根据API实际情况填写,示例代码使用“POST”作为样 例。

● url:请求的url,不包含QueryString及fragment部分。域名部分请使用API所在的 分组绑定的您自己的独立域名。示例代码使用“http://serviceEndpoint/java-sdk”作为样例。

● queryString: url携带参数的部分,根据API实际情况填写。支持的字符集为[0-9a-zA-Z./;[]\-=~#%^&_+: "]。示例代码使用“name=value”作为样例。

● header:请求的头域。根据API实际情况填写,不支持中文和下划线。示例代码使 用“Content-Type:text/plain”作为样例。如果API发布到非RELEASE环境时,需 要增加自定义的环境名称,示例代码使用“x-stage:publish_env_name”作为样 例。

● body:请求的正文。根据API实际情况填写,示例代码使用“demo”作为样例。

样例代码如下:

Request request = new Request();

try {

request.setKey("4f5f626b-073f-402f-a1e0-e52171c6100c"); //创建集成应用时得到 request.setSecret("*****"); //创建集成应用时得到

request.setMethod("POST");

request.setUrl("http://serviceEndpoint/java-sdk");

//url地址在创建API时得到 //子域名在创建API分组时得到

request.addQueryStringParam("name", "value");

request.addHeader("Content-Type", "text/plain");

//request.addHeader("x-stage", "publish_env_name"); //如果API发布到非RELEASE环境,需要增加自 定义的环境名称 // SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, new

TrustSelfSignedStrategy()).useTLS().build();

// SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext, new AllowAllHostnameVerifier());

//若使用系统分配的子域名访问https请求的API时,需要在custom()后添加

“.setSSLSocketFactory(sslSocketFactory)”,用来忽略证书校验 client = HttpClients.custom().build();

HttpResponse response = client.execute(signedRequest);

System.out.println(response.getStatusLine().toString());

Header[] resHeaders = response.getAllHeaders();

for (Header h : resHeaders) {

System.out.println(h.getName() + ":" + h.getValue());

}

HttpEntity resEntity = response.getEntity();

if (resEntity != null) {

System.out.println(System.getProperty("line.separator") + EntityUtils.toString(resEntity, "UTF-8"));

}

} catch (Exception e) {

e.printStackTrace();

} finally { try {

if (client != null) {

client.close();

}

} catch (IOException e) {

e.printStackTrace();

} }

步骤4 选择“Main.java”,单击鼠标右键,选择“Run As > Java Application”,运行工程 测试代码。

2-19 运行工程测试代码

步骤5 在“Console”页签,查看运行结果。

2-20 调用成功后的返回信息

----结束