华为云用户手册

  • 响应参数 状态码: 400 表3 响应Body参数 参数 参数类型 描述 error_code String 错误码标识,CTS.XXX。 error_msg String 错误描述。 状态码: 401 表4 响应Body参数 参数 参数类型 描述 error_code String 错误码标识,CTS.XXX。 error_msg String 错误描述。 状态码: 403 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码标识,CTS.XXX。 error_msg String 错误描述。 状态码: 404 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码标识,CTS.XXX。 error_msg String 错误描述。 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码标识,CTS.XXX。 error_msg String 错误描述。 状态码: 503 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码标识,CTS.XXX。 error_msg String 错误描述。
  • API概览 云审计服务所提供的接口为扩展接口。通过使用云审计服务所提供的接口,您可以完整的使用云审计服务的所有功能。例如查询API版本号、事件列表、创建追踪器等。 云审计服务提供的具体API如表1所示。 表1 接口说明 子类型 说明 API版本号 CTS API的版本查询接口,支持查询所有API或者指定API的版本号。 追踪器 CTS API的追踪器管理接口,用来创建、修改、查询以及删除追踪器。 事件 CTS API的事件管理接口,用来查询系统记录的7天内资源操作记录。 关键操作通知 CTS API的关键操作通知管理接口,用来创建、修改、查询以及删除关键操作通知。 标签 CTS API的标签管理接口,用来添加和删除标签。
  • 请求消息 请求参数如表2所示。 表2 请求参数 参数 是否必选 参数类型 描述 serverinfo 是 Array of objects 共享磁盘需要挂载的弹性云服务器列表。详细请参见表3。 表3 serverinfo 列表数据结构说明 参数 是否必选 参数类型 描述 server_id 是 String 共享磁盘需要挂载的弹性云服务器ID。 device 否 String 磁盘挂载点。 说明: 新增加的磁盘挂载点不能和已有的磁盘挂载点相同。 对于采用XEN虚拟化类型的弹性云服务器,device为必选参数;系统盘挂载点请指定/dev/sda;数据盘挂载点请按英文字母顺序依次指定,如/dev/sdb,/dev/sdc,如果指定了以“/dev/vd”开头的挂载点,系统默认改为“/dev/sd”。 对于采用KVM虚拟化类型的弹性云服务器,系统盘挂载点请指定/dev/vda;数据盘挂载点可不用指定,也可按英文字母顺序依次指定,如/dev/vdb,/dev/vdc,如果指定了以“/dev/sd”开头的挂载点,系统默认改为“/dev/vd”。 对于仅支持SCSI类型磁盘的弹性云服务器,数据盘的挂载点请按英文字母顺序依次指定,如/dev/sdb,/dev/sdc,系统不会修改默认挂载点。
  • 请求示例 批量挂载共享数据盘到ID为“a26887c6-c47b-4654-abb5-dfadf7d3f803”和“a26887c6-c47b-4654-abb5-dfadf7d3fa05”的云服务器。 POST https://{endpoint}/v1/{project_id}/batchaction/attachvolumes/{volume_id} { "serverinfo": [ { "server_id": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "device": "/dev/sdb" }, { "server_id": "a26887c6-c47b-4654-abb5-dfadf7d3fa05", "device": "/dev/sdb" } ] }
  • 请求消息 表2 请求参数 参数 是否必选 参数类型 描述 block_device 是 Object 更新云服务器挂载的单个磁盘信息,参考表3。 表3 block_device数据结构说明 参数 是否必选 参数类型 描述 delete_on_termination 是 Boolean 弹性云服务器释放时,磁盘随实例释放策略。 true:磁盘随实例释放。 false:磁盘不随实例释放。 说明: 不支持修改包年/包月计费模式的磁盘。 不支持修改共享盘。 不支持修改系统盘。
  • 响应消息 响应参数如表2所示。 表2 响应参数 参数 参数类型 描述 interfaceAttachment Object 云服务器网卡信息列表,详情请参见表3。 表3 interfaceAttachment字段数据结构说明 参数 参数类型 描述 port_state String 网卡端口状态。 fixed_ips Array of objects 网卡IP信息列表,详情请参见表4。 net_id String 网卡端口所属网络ID。 port_id String 网卡端口ID。 mac_addr String 网卡Mac地址信息。 表4 fixed_ips字段数据结构说明 参数 参数类型 描述 subnet_id String 网卡所属子网ID。 ip_address String 网卡IP地址。
  • 响应示例 { "interfaceAttachment": { "port_state": "ACTIVE", "fixed_ips": [ { "subnet_id": "f8a6e8f8-c2ec-497c-9f23-da9616de54ef", "ip_address": "192.168.1.3" } ], "net_id": "3cb9bc59-5699-4588-a4b1-b87f96708bc6", "port_id": "ce531f90-199f-48c0-816c-13e38010b442", "mac_addr": "fa:16:3e:4c:2c:30" } }
  • 请求消息 表2 请求参数 参数 是否必选 参数类型 描述 volumeAttachment 是 Object 云服务器挂载信息,参考表3。 dry_run 否 Boolean 是否只预检此次请求。 true:发送检查请求,不会挂载磁盘。检查项包括是否填写了必需参数、请求格式、业务限制。如果检查不通过,则返回对应错误。如果检查通过,则返回响应结果。 false:发送正常请求,通过检查后并且进行挂载磁盘请求。 默认值:false 表3 volumeAttachment数据结构说明 参数 是否必选 参数类型 描述 volumeId 是 String 待挂载磁盘的磁盘ID,UUID格式。 device 否 String 磁盘挂载点。 说明: 新增加的磁盘挂载点不能和已有的磁盘挂载点相同。 对于采用XEN虚拟化类型的弹性云服务器,device为必选参数;系统盘挂载点请指定/dev/sda;数据盘挂载点请按英文字母顺序依次指定,如/dev/sdb,/dev/sdc,如果指定了以“/dev/vd”开头的挂载点,系统默认改为“/dev/sd”。 对于采用KVM虚拟化类型的弹性云服务器,系统盘挂载点请指定/dev/vda;数据盘挂载点可不用指定,也可按英文字母顺序依次指定,如/dev/vdb,/dev/vdc,如果指定了以“/dev/sd”开头的挂载点,系统默认改为“/dev/vd”。 对于仅支持SCSI类型磁盘的弹性云服务器,系统盘挂载点为“/dev/sda”,数据盘的挂载点请按英文字母顺序依次指定,如/dev/sdb,/dev/sdc,系统不会修改默认挂载点。 volume_type 否 String 云硬盘类型。 该字段于dry_run为true并且volumeId不存在时有效且为必选字段。 count 否 Integer 云硬盘的个数。 该字段于dry_run为true并且volumeId不存在时有效,如果该字段不存在,默认为1。 hw:passthrough 否 String true表示云硬盘的设备类型为SCSI类型,即允许ECS操作系统直接访问底层存储介质。支持SCSI锁命令 false表示云硬盘的设备类型为VBD (虚拟块存储设备 , Virtual Block Device)类型,VBD只能支持简单的SCSI读写命令。 该字段于dry_run为true并且volumeId不存在时有效且为必选字段。
  • 请求示例 挂载SCSI类型的云硬盘到云服务器,挂载点为“/dev/sda”。 POST https://{endpoint}/v1/{project_id}/cloudservers/{server_id}/attachvolume { "volumeAttachment": { "volumeId": "a26887c6-c47b-4654-abb5-dfadf7d3f803", "device": "/dev/sda", "volume_type": "SSD", "count": 5, "hw:passthrough": "true" }, "dry_run": false }
  • 移出成员 移出成员可以移出单个,也可以批量移出多个。 移出单个项目成员(用户) 在成员管理页面的成员列表中,单击目标成员所在行后的,根据提示完成移出。 成员移出后,即该用户被移出项目。 用户被移出后,其名下的工作项等资源不会被删除,他所做过的工作仍旧会被保留,即由租户管理员进行修改,如果需要转移项目的管理权限,请参见移交项目创建者。 批量移出项目成员 在“项目成员”列表页面中勾选目标成员。 单击“批量移出”。 根据移出提示单击“确定”,即可完成项目成员批量移出。
  • 邀请用户加入项目 管理员创建了IAM用户,需要将用户添加到项目下,用户才能看到项目信息。如果未添加至任何项目,用户登录后将看不到任何项目信息。除了添加成员(主动添加用户)至项目,还可以邀请用户自由加入项目。 当前提供两种加入项目方式,分别为二维码及项目链接。您可以分享二维码或链接给被邀请人,被邀请人通过扫描二维码或项目链接在登录华为云后即可加入受邀请项目。 (可选)设置被邀请人加入项目审核方式。 被邀请人通过链接或是二维码加入项目,管理员可以在“待审核”页签中开启或关闭“通过邀请加入该项目需要审核”。 为了保障公司安全,通过分享二维码或分享项目链接邀请加入的成员,默认需要等待管理员审批。管理员也可以根据实际情况设置取消审核。 如果审核列表中有待审核用户,无法关闭审核,需要将所有用户审核完成后才可关闭。 开启:默认为开启状态。 如果开启审核,用户通过二维码或链接登录华为云后,需填写申请理由并提交申请,由管理员在“待审核”页签中审核通过后,才可以加入项目。 关闭:如果关闭审核,用户通过二维码或链接登录华为云后即可自动加入项目。 单击“通过链接邀请”,您可以将“邀请成员”窗口中提供的方式分享给被邀请成员。 在“邀请成员”页面加入项目有两种方式: 二维码:截图该二维码,将二维码分享给被邀请人,被邀请人使用微信或支付宝扫描该二维码。 链接:单击“复制链接”,分享该链接给被邀请人,被邀请人打开该链接。 如果被邀请人使用二维码或链接登录华为云后,页面出现“获取权限失败”的报错,请参见常见问题该企业用户未经授权进行处理。
  • 邀请成员 管理员创建了用户,需要将用户添加为项目的成员,才能看到项目信息。如果未添加至任何项目,用户登录后将看不到任何项目信息。 单击“通过链接邀请”。 在“邀请成员”页面您直接扫描二维码加入成员后,即可看到所在项目的信息。 单击“复制链接”获取项目链接,分享项目链接可邀请成员自由加入项目。待被邀请人进入该链接后提交申请。 (可选)管理员在“待审核”成员列表中单击通过审核即完成邀请。 可以根据需要开启或关闭“通过邀请加入该项目需要审核” 默认审核:管理员审核通过后,用户即可加入成员。 关闭审核:用户可自由选择加入项目。如果审核列表中存在用户待审核,则不能关闭。 为了保障公司安全,通过分享二维码或分享项目链接邀请加入的成员,默认需要等待管理员再次审批。管理员也可以根据实际情况设置取消审核。
  • 修改成员角色 项目创建者、项目的管理员(项目经理和测试经理)才可以给成员设置项目角色,默认项目角色类型如下: 项目创建者 项目经理 开发人员 测试经理 测试人员 参与者 浏览者 运维经理 项目添加好成员后,可以给项目成员设置不同角色。在成员管理找到目标角色后,单击成员所在行的角色名称,通过下拉列表重新选择成员角色类型即可。 如果默认角色类型不能满足实际需求,可以自定义角色类型(如:产品经理)并赋予相关权限,详细操作请参见权限管理(IPD项目)。
  • 请求消息 请求参数 无。 请求示例 GET https://bss.myhuaweicloud.com/v2/bills/customer-bills/free-resources-usage-records?free_resource_id=free_resource_id&product_id=product_id&resource_type_code=resource_type_code&deduct_time_begin=2021-10-01&deduct_time_end=2021-10-31&offset=0&limit=10 HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 错误描述 400 CBC.0100 参数错误。 400 CBC.70900002 您的账号需要通过华为云HIS平台创建企业子账号。 400 CBC.99007490 您的账号关联的是退出中的云经销商,禁止创建企业子。 500 CBC.7004 发起的业务操作存在不满足的业务检查项。 400 CBC.99000026 验证码错误。 400 CBC.99000027 验证码过期。 400 CBC.99000029 手机号码已存在。 400 CBC.99000030 手机号码超出限制。 400 CBC.99000031 DomainName无效。 400 CBC.99000036 客户密码格式不合法。 400 CBC.99000051 该手机号/邮箱已被华为报备,无法创建客户。 400 CBC.99007197 您的IP已经被限流。 403 CBC.0151 访问拒绝。 500 CBC.0999 其他错误。
  • Web UI 客户可以在费用中心“我的订单”页面对待支付状态的包年/包月产品订单进行支付。 进入“我的订单”页面。 选中“待支付”页签。 开通了项目组管理的客户可以在“我的订单”右侧的下拉选项框中筛选该客户下各项目组的名称,查询各项目组待支付的订单。 根据实际情况选择支付类型。 单个支付:单击待支付订单列表对应的“支付”。 合并支付:选中待支付订单前的复选框,单击“合并支付”。 选择优惠和支付方式,单击“确认付款”。 开启敏感操作保护的客户,支付订单时需进行二次认证确认身份。 优惠包含折扣优惠和优惠券。 折扣优惠,包含商务授权折扣、合作伙伴授权折扣、合作伙伴调价优惠、线下合同折扣和折扣券优惠。折扣优惠不可同时使用。 客户下单时选择使用促销折扣或折扣券,如果促销折扣/折扣券的失效时间比订单正常取消(当前为七天)的时间少,则支付截止时间调整为促销折扣/折扣券的失效时间。 示例: 客户在2018/11/26 23:12:32下单购买某云服务时,选择使用有效期为2018-11-01 00:00:00~2018-11-30 23:59:59的 8折 折扣券。这时,该订单的失效时间调整为2018/11/30 23:59:59。(正常订单的失效时间为7天,即2018/11/26 23:12:32下单时创建订单,订单的失效时间为2018/12/03 23:12:32。) 客户下单时选择适应合同商务授权折扣或合作伙伴授予折扣,支付订单时以下单的价格为准。即客户下单时折扣在有效期,虽支付时折扣已过期,但支付时折扣价格不变,依旧享受折扣。 示例: 客户在2018/11/26 23:12:32下单购买某云服务时,选择使用有效期为2018-11-01 00:00:00~2018-11-30 23:59:59的 8折 合同商务授权折扣。订单失效时间(2018/12/03 23:12:32)前,支付该订单仍可享8折的优惠。 优惠券包含现金券和代金券。 对于弹性云服务器、云硬盘、虚拟私有云的新购订单和规格变更订单,请在订单确认页面勾选可使用的折扣优惠。进入支付页面,不可再修改折扣优惠,但可以使用现金券或代金券。 当伙伴为子客户设置订单折扣后,子客户支付订单时,不可再修改折扣优惠。 系统支持余额支付和在线支付两种支付方式。对于顾问销售类的合作伙伴子客户,支持使用“伙伴支付”的支付方式,即申请由合作伙伴提交并支付订单。使用“伙伴支付”支付方式时,不支持使用优惠券。 在“支付页面”,还可以根据当前的支付金额,生成请款合同,以便于客户向公司申请经费、报账或归档。 生成请款合同需跳转到“合同管理”页面,将取消本次支付。详细操作步骤如下: 单击“更多支付方式”,选择“生成请款合同”。 单击“生成合同”,跳转到“合同管理”页面。 申请线上合同。详细操作步骤,请参见如何申请线上合同。 获取并输入手机验证码。 使用当前客户的手机号码获取验证码。 单击“切换验证手机”,可以修改用于支付验证的手机号码。 单击“确认”。 系统提示支付成功信息。
  • 请求消息 请求参数 无。 请求示例 GET https://bss.myhuaweicloud.com/v1.0/{domain_id}/common/order-mgr/orders/refund-order?order_id=CS1*****GT HTTP/1.1 Content-Type: application/json X-Auth-Token:MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 200 CBC.0000 成功。 500 CBC.0999 其他错误。 400 CBC.0100 参数错误。 403 CBC.0151 访问拒绝。 200 CBC.5026 该订单不是降配或者退订订单。
  • 功能介绍 客户在伙伴销售平台查询某次退订订单或者降配订单的退款金额来自哪些资源和对应订单。 注意事项: 该接口可以使用客户AK/SK或者Token调用。 可以在调用完“退订包年/包月资源”接口生成退订订单ID后,调用该接口查询退订订单对应的金额所属资源和订单。例如,调用“退订包年/包月资源”接口退订资源及其已续费周期后,您可以调用本小节的接口查询到退订金额归属的原开通订单ID和原续费订单ID。 2018年5月份之后退订的订单才能查询到归属的原订单ID。 该接口即将下线,“查询退款订单的金额详情”接口请参考查询退款订单的金额详情。
  • 状态码 状态码4xx:由于明显的客户端错误(例如,格式错误的请求语法、参数错误等),华为云会返回4xx错误码,请及时检查请求消息的正确性,重新发起请求。 状态码5xx:由于华为云系统原因,导致无法完成明显有效请求的处理,可及时联系华为云客服处理。 HTTP状态码 错误码 描述 200 CBC.0000 成功。 500 CBC.0999 其他错误。 400 CBC.0100 参数错误。 403 CBC.0151 访问拒绝。 200 CBC.5004 无对该客户的操作权限。
  • 调用API示例 在工程中引入sdk(signer.go)。 import "apig-sdk/go/core" 生成一个新的Signer,输入AppKey和AppSecret。 s := core.Signer{ // 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. Key: os.Getenv("HUAWEICLOUD_SDK_AK"), Secret: os.Getenv("HUAWEICLOUD_SDK_SK"), } 生成一个新的Request,指定域名、方法名、请求url、query和body。 r, _ := http.NewRequest("POST", "http://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/api?a=1&b=2", ioutil.NopCloser(bytes.NewBuffer([]byte("foo=bar")))) 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 r.Header.Add("x-stage", "RELEASE") 进行签名,执行此函数会在请求中添加用于签名的X-Sdk-Date头和Authorization头。 s.Sign(r) 访问API,查看访问结果。 resp, err := http.DefaultClient.Do(r) body, err := ioutil.ReadAll(resp.Body)
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-cpp-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 hasher.cpp SDK代码 hasher.h header.h RequestParams.cpp RequestParams.h signer.cpp signer.h Makefile Makefile文件 main.cpp 示例代码
  • 调用API示例 在工程中引入apig_sdk。 1 2 3 from apig_sdk import signer import requests import os 生成一个新的Signer,填入AppKey和AppSecret。 1 2 3 4 5 sig = signer.Signer() // 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. sig.Key = os.getenv('HUAWEICLOUD_SDK_AK') sig.Secret = os.getenv('HUAWEICLOUD_SDK_SK') 生成一个Request对象,指定方法名、请求uri、header和body。 1 2 3 4 r = signer.HttpRequest("POST", "https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?a=1", {"x-stage": "RELEASE"}, "body") 进行签名,执行此函数会在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。 X-Sdk-Date是一个必须参与签名的请求消息头参数。 1 sig.Sign(r) 访问API,查看访问结果。 1 2 3 resp = requests.request(r.method, r.scheme + "://" + r.host + r.uri, headers=r.headers, data=r.body) print(resp.status_code, resp.reason) print(resp.content)
  • 前提条件 已获取API的调用信息,具体请参见认证前准备。 已安装Python安装包2.7.9或3.X版本,如果未安装,请至Python官方下载页面下载。 Python安装完成后,在cmd/shell窗口中使用pip安装“requests”库。 pip install requests 如果pip安装requests遇到证书错误,请下载并使用Python执行此文件,升级pip,然后再执行以上命令安装。 已安装IntelliJ IDEA 2018.3.5或以上版本,如果未安装,请至IntelliJ IDEA官方网站下载。 已在IntelliJ IDEA中安装Python插件,如果未安装,请按照图1所示安装。 图1 安装Python插件
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-python-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 apig_sdk\__init__.py SDK代码 apig_sdk\signer.py main.py 示例代码 backend_signature.py 后端签名示例代码 licenses\license-requests 第三方库license文件
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-android-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 app\ 安卓工程代码 gradle\ gradle相关文件 build.gradle gradle配置文件 gradle.properties settings.gradle gradlew gradle wrapper执行脚本 gradlew.bat
  • 调用API示例 在Android工程中的“app/libs”目录下,加入SDK所需jar包。其中jar包必须包括: java-sdk-core-x.x.x.jar commons-logging-1.2.jar joda-time-2.10.jar 在“build.gradle”文件中加入okhttp库的依赖。 在“build.gradle”文件中的“dependencies”下加入“implementation 'com.squareup.okhttp3:okhttp:3.14.2'”。 dependencies { ... ... implementation 'com.squareup.okhttp3:okhttp:3.14.3' } 创建request,输入AppKey和AppSecret,并指定域名、方法名、请求uri和body。 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.setSecret(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; } 对请求进行签名,生成okhttp3.Request对象来访问API。 okhttp3.Request signedRequest = Client.signOkhttp(request); OkHttpClient client = new OkHttpClient.Builder().build(); Response response = client.newCall(signedRequest).execute();
  • 调用API示例 在工程中引入sdk。 1 using APIGATEWAY_SDK; 生成一个新的Signer, 填入AppKey和AppSecret。 1 2 3 4 5 Signer signer = new Signer(); // 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. signer.Key = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_AK"); signer.Secret = Environment.GetEnvironmentVariable("HUAWEICLOUD_SDK_SK"); 生成一个HttpRequest对象,指定域方法名、请求url和body。 1 2 3 HttpRequest r = new HttpRequest("POST", new Uri("https://c967a237-cd6c-470e-906f-a8655461897e.apigw.exampleRegion.com/app1?query=value")); r.body = "{\"a\":1}"; 给请求添加x-stage头,内容为环境名。如有需要,添加需要签名的其他头域。 1 r.headers.Add("x-stage", "RELEASE"); 进行签名,执行此函数会生成一个新的HttpWebRequest,并在请求参数中添加用于签名的X-Sdk-Date头和Authorization头。 1 HttpWebRequest req = signer.Sign(r); 访问API,查看访问结果。 1 2 3 4 5 6 var writer = new StreamWriter(req.GetRequestStream()); writer.Write(r.body); writer.Flush(); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); var reader = newStreamReader(resp.GetResponseStream()); Console.WriteLine(reader.ReadToEnd());
  • 获取SDK 请登录API网关控制台,参考《API网关用户指南》的“SDK”章节,进入SDK页面并下载SDK。 或直接下载SDK的最新版本,获取“ApiGateway-csharp-sdk.zip”压缩包,解压后目录结构如下: 名称 说明 apigateway-signature\Signer.cs SDK代码 apigateway-signature\HttpEncoder.cs sdk-request\Program.cs 签名请求示例代码 backend-signature\ 后端签名示例工程 csharp.sln 工程文件 licenses\license-referencesource 第三方库license文件
  • 前提条件 已获取API的调用信息,具体参见认证前准备。 已安装IntelliJ IDEA 2018.3.5或以上版本,如果未安装,请至IntelliJ IDEA官方网站下载。 已安装PHP安装包8.0.3或以上版本,如果未安装,请至PHP官方下载页面下载。 将PHP安装目录中的“php.ini-production”文件复制到“C:\windows”,改名为“php.ini”,并在文件中增加如下内容。 1 2 3 extension_dir = "php安装目录/ext" extension=openssl extension=curl 已在IntelliJ IDEA中安装PHP插件,如果未安装,请按照图1所示安装。 图1 安装PHP插件
共100000条