3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-waf”,具体的SDK版本号请参见 SDK开发中心 。
Copied!
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-waf</artifactId>
<version>3.0.55</version>
</dependency>
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-core</artifactId>
<version>3.0.55</version>
</dependency>
4. 开始使用
4.1 导入依赖模块
Copied!
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.core.region.Region;
import com.huaweicloud.sdk.waf.v1.WafClient;
import com.huaweicloud.sdk.waf.v1.model.*;
import com.huaweicloud.sdk.waf.v1.region.WafRegion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
4.2 初始化认证信息
Copied!
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
ICredential auth = WaflUtils.getCredential(ak, sk);
static class WaflUtils {
public static ICredential getCredential(String ak, String sk) {
return new BasicCredentials()
.withAk(ak)
.withSk(sk);
}
public static WafClient getWafClient(Region region, ICredential auth) {
return WafClient.newBuilder()
.withCredential(auth)
.withRegion(region)
.build();
}
}
相关参数说明如下所示:
region: 服务所在区域,当前支持北京一、北京二、北京四、上海一、上海二、广州、俄罗斯、新加坡、香港、曼谷、南非
- CN_NORTH_1 北京一
- CN_NORTH_2 北京二
- CN_NORTH_4 北京四
- CN_EAST_3 上海一
- CN_EAST_2 上海二
- CN_SOUTH_1 广州
- AP_SOUTHEAST_1 香港
- AP_SOUTHEAST_2 曼谷
- AP_SOUTHEAST_3 新加坡
- AF_SOUTH_1 约翰内斯堡
4.4 配置请求参数
以查询云模式防护域名列表接口为例:
Copied!
ListHostRequest listHostRequest = new ListHostRequest();
listHostRequest.withPage(1);
listHostRequest.withPagesize(10);
ListHostResponse listHostResponse = client.listHost(listHostRequest);
相关demo说明见 5. SDK demo代码解析
4.5 发送请求
以查询云模式防护域名列表接口为例:
Copied!
ListHostResponse listHostResponse = client.listHost(listHostRequest);
5. SDK demo代码解析
5.1 查询云模式防护域名列表接口
demo请见HostDemo.listHost(WafClient client)方法
5.1.1 构造请求参数
Copied!
ListHostRequest listHostRequest = new ListHostRequest();
listHostRequest.withPage(1);
listHostRequest.withPagesize(10);
ListHostResponse listHostResponse = client.listHost(listHostRequest);
5.1.2 发送请求
Copied!
ListHostResponse listHostResponse = client.listHost(listHostRequest);
5.1.3 接口及参数说明
请见 查询云模式防护域名列表接口
5.2 创建云模式防护域名
demo请见HostDemo.createHost(WafClient client)方法
5.2.1 构造请求参数
Copied!
CloudWafServer cloudWafServer = new CloudWafServer()
.withAddress("1.1.1.1")
.withBackProtocol("HTTP")
.withFrontProtocol("HTTP")
.withPort(8080)
.withType(CloudWafServer.TypeEnum.IPV4);
List<CloudWafServer> servers = new ArrayList<>();
servers.add(cloudWafServer);
CreateHostRequest createHostRequest = new CreateHostRequest().withBody(new CreateHostRequestBody()
.withServer(servers)
.withProxy(false)
.withHostname("www.test.com")
.withDescription("测试域名"));
5.2.2 发送请求
Copied!
CreateHostResponse createHostResponse = client.createHost(createHostRequest);
5.2.3 接口及参数说明
请见 创建云模式防护域名
5.3 更新云模式防护域名接口
demo请见HostDemo.updateHost(WafClient client)方法
5.3.1 构造请求参数
Copied!
ListHostRequest listHostRequest = new ListHostRequest()
.withHostname("www.test.com")
.withPage(1)
.withPagesize(10);
ListHostResponse listHostResponse = client.listHost(listHostRequest);
String instanceId = listHostResponse.getItems().get(0).getId();
UpdateHostRequestBody updateHostRequestBody = new UpdateHostRequestBody().withProxy(true);
UpdateHostRequest updateHostRequest = new UpdateHostRequest()
.withBody(updateHostRequestBody)
.withInstanceId(instanceId);
5.3.2 发送请求
Copied!
UpdateHostResponse updateHostResponse = client.updateHost(updateHostRequest);
5.3.3 接口及参数说明
请见 更新云模式防护域名
5.4 删除云模式防护域名接口
demo请见HostDemo.deleteHost(WafClient client, String instanceId) 方法
5.4.1 构造请求参数
Copied!
DeleteHostRequest deleteHostRequest = new DeleteHostRequest().withInstanceId(instanceId);
5.4.2 发送请求
Copied!
DeleteHostResponse deleteHostResponse = client.deleteHost(deleteHostRequest);
5.4.3 接口及参数说明
请见 删除云模式防护域名接口
发布日期 |
文档版本 |
修订说明 |
2021-08-30 |
1.0 |
文档首次发布 |
云模式防护网站管理(Java版本)
1. 简介
华为云提供了Web应用防火墙SDK,您可以直接集成使用服务端SDK来调用Web应用防火墙的相关API,从而实现对证书的快速操作。该示例展示了如何通过java版SDK创建修改删除查询防护网站。
2. 开发前准备
3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-waf”,具体的SDK版本号请参见 SDK开发中心 。
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-waf</artifactId> <version>3.0.55</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>3.0.55</version> </dependency>
4. 开始使用
4.1 导入依赖模块
//用户身份认证 import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; //请求异常类 import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.core.region.Region; //waf的客户端 import com.huaweicloud.sdk.waf.v1.WafClient; import com.huaweicloud.sdk.waf.v1.model.*; import com.huaweicloud.sdk.waf.v1.region.WafRegion; //日志打印类 import org.slf4j.Logger; import org.slf4j.LoggerFactory;
4.2 初始化认证信息
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); ICredential auth = WaflUtils.getCredential(ak, sk); static class WaflUtils { // 通过 ak, sk 获取初始化认证信息 public static ICredential getCredential(String ak, String sk) { return new BasicCredentials() .withAk(ak) .withSk(sk); } // 初始化WAF的客户端 public static WafClient getWafClient(Region region, ICredential auth) { return WafClient.newBuilder() .withCredential(auth) .withRegion(region) // 选择服务所在区域 .build(); } }
相关参数说明如下所示:
region: 服务所在区域,当前支持北京一、北京二、北京四、上海一、上海二、广州、俄罗斯、新加坡、香港、曼谷、南非
4.4 配置请求参数
以查询云模式防护域名列表接口为例:
ListHostRequest listHostRequest = new ListHostRequest(); listHostRequest.withPage(1); listHostRequest.withPagesize(10); ListHostResponse listHostResponse = client.listHost(listHostRequest);
相关demo说明见 5. SDK demo代码解析
4.5 发送请求
以查询云模式防护域名列表接口为例:
ListHostResponse listHostResponse = client.listHost(listHostRequest);
5. SDK demo代码解析
5.1 查询云模式防护域名列表接口
demo请见HostDemo.listHost(WafClient client)方法
5.1.1 构造请求参数
ListHostRequest listHostRequest = new ListHostRequest(); listHostRequest.withPage(1); listHostRequest.withPagesize(10); ListHostResponse listHostResponse = client.listHost(listHostRequest);
5.1.2 发送请求
ListHostResponse listHostResponse = client.listHost(listHostRequest);
5.1.3 接口及参数说明
请见 查询云模式防护域名列表接口
5.2 创建云模式防护域名
demo请见HostDemo.createHost(WafClient client)方法
5.2.1 构造请求参数
//初始化服务器配置 CloudWafServer cloudWafServer = new CloudWafServer() .withAddress("1.1.1.1") .withBackProtocol("HTTP") .withFrontProtocol("HTTP") .withPort(8080) .withType(CloudWafServer.TypeEnum.IPV4); List<CloudWafServer> servers = new ArrayList<>(); servers.add(cloudWafServer); // 初始化域名信息 CreateHostRequest createHostRequest = new CreateHostRequest().withBody(new CreateHostRequestBody() .withServer(servers) .withProxy(false) .withHostname("www.test.com") .withDescription("测试域名"));
5.2.2 发送请求
CreateHostResponse createHostResponse = client.createHost(createHostRequest);
5.2.3 接口及参数说明
请见 创建云模式防护域名
5.3 更新云模式防护域名接口
demo请见HostDemo.updateHost(WafClient client)方法
5.3.1 构造请求参数
//查询域名id ListHostRequest listHostRequest = new ListHostRequest() .withHostname("www.test.com") .withPage(1) .withPagesize(10); ListHostResponse listHostResponse = client.listHost(listHostRequest); //修改域名信息的请求体 String instanceId = listHostResponse.getItems().get(0).getId(); UpdateHostRequestBody updateHostRequestBody = new UpdateHostRequestBody().withProxy(true); UpdateHostRequest updateHostRequest = new UpdateHostRequest() .withBody(updateHostRequestBody) .withInstanceId(instanceId);
5.3.2 发送请求
UpdateHostResponse updateHostResponse = client.updateHost(updateHostRequest);
5.3.3 接口及参数说明
请见 更新云模式防护域名
5.4 删除云模式防护域名接口
demo请见HostDemo.deleteHost(WafClient client, String instanceId) 方法
5.4.1 构造请求参数
DeleteHostRequest deleteHostRequest = new DeleteHostRequest().withInstanceId(instanceId);
5.4.2 发送请求
DeleteHostResponse deleteHostResponse = client.deleteHost(deleteHostRequest);
5.4.3 接口及参数说明
请见 删除云模式防护域名接口