创建包时段主机

该接口通过鉴权接口颁发的token作为访问令牌,创建包时段主机需要调用者知晓主机配置ID和镜像ID,主机配置ID可以在主机配置列表接口获取,镜像ID可以在镜像列表接口获取,在入参时需要注意主机配置的type需要和镜像的type需要保持一致。

1.接口描述

接口请求地址:POST v1/pve/open/createRent

2.输入参数

参数名称 描述 是否必选 类型 Location
Finovy-Access-Token 令牌-口令 yes string header
packageId 主机配置ID(主机配置type需要和镜像type一致) yes string body
imageId 镜像ID(镜像type需要和主机配置type一致) yes string body
periodNumber 购买周期(整数,如当periodNumber为1,periodType为1时,即周期为1天) yes int body
periodType 购买周期类型(1日、2周、3月、4季度、5年) yes int body

3.输出参数

参数名称 描述 类型
data 主机ID string

4.示例

示例1:请求成功示例

输入示例

POST v1/pve/open/createRent / HTTP/1.1
Host: client.xuandashi.com
Content-Type: application/json
Finovy-Access-Token: 4vL4rcNGNcgx5v0RLCcFew
<公共请求参数>

{
  "packageId":"teTapaSUFq",
  "imageId":"507",
  "periodNumber":5,
  "periodType":3
}

输出示例

{
    "code":0,
    "data":"dyMFQQgHIW",
    "msg":"success",
    "success":true,
    "traceId":"xxxxxxxxxxxxxx"
}

5.错误码

错误码 错误描述 解决方案
1037 未进行实名认证 请完成实名认证
6002 资源不足, 请重新选择配置 请选取其他主机配置
6005 创建等待 请稍后重试
7005 主机配置类型与镜像类型不一致 请确认主机配置类型与镜像类型是否一致
9000 钱包异常 钱包错误
9001 钱包余额不足 余额不足

6.Java请求示例

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
class Main{
    public static void main(String[] args) throws IOException {
        URL url = new URL("https://client.xuandashi.com/v1/pve/open/createRent");
        HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
        httpConn.setRequestMethod("POST");

        httpConn.setRequestProperty("Content-Type", "application/json");
        httpConn.setRequestProperty("Finovy-Access-Token", "3V41hUWEwlwKH44m7SpJOs");

        httpConn.setDoOutput(true);
        OutputStreamWriter writer = new OutputStreamWriter(httpConn.getOutputStream());
        writer.write("{\"packageId\": \"teTapaSUFq\", \"imageId\": \"507\", \"periodNumber\": 4, \"periodType\": 3 }");
        writer.flush();
        writer.close();
        httpConn.getOutputStream().close();

        InputStream responseStream = httpConn.getResponseCode() / 100 == 2
                ? httpConn.getInputStream()
                : httpConn.getErrorStream();
        Scanner s = new Scanner(responseStream).useDelimiter("\\A");
        String response = s.hasNext() ? s.next() : "";
        System.out.println(response);
    }
}