首页 > 解决方案 > Godaddy API 获取所有域和打印自动化,打印空

问题描述

目前正在尝试使用他们的 API 自动获取我所有的 Godaddy 域(顺便说一句,我正在使用 IntelliJ 终极版)。我目前正在收到回复,似乎一切都运行良好,除了我尝试打印出例如所有域名的名称时,它只是打印出“Null”。下面是我的代码:

public class GoDaddyGET {


    Properties prop = new Properties();


    public void getData() throws IOException {

        FileInputStream fis = new FileInputStream("C:\\Users\\nerdi\\FableMedia\\src\\main\\java\\files\\env.properties");
        prop.load(fis);

        //prop.getProperty("HOST");
    }


    public void Test(){

        // write your code here

        //BaseURL or Host
        RestAssured.baseURI = prop.getProperty("GODADDYHOST");

        Response res = given().
                header("Authorization", prop.getProperty("GODADDYKEY")).log().all().
                header("Content-Type", "application/json").
                header("Accept", "application/json").
                param("includes", "contacts").
                when().
                get(Resources.godaddyGetData()).
                then().assertThat().statusCode(200).
                and().
                contentType(ContentType.JSON).
                and().
                body("array[0].domain",equalTo("SENSITIVE INFORMATION")).
                and().
                body("array[0].domainId",equalTo("SENSITIVE INFORMATION")).
                and().
                header("Server", "SENSITIVE INFORMATION").log().body().

                extract().response();


        JsonPath js = ReusableMethods.rawToJson(res);

        int count = js.get("array.size()");

        for (int i = 0; i < count; i++){
            String name = js.get("array["+i+"].domain");
            System.out.println(name);
        }
        System.out.println(count);

    }
}

下面是我的终端输出:

Request method: GET
Request URI:    https://api.godaddy.com/v1/domains?includes=contacts
Proxy:          <none>
Request params: includes=contacts
Query params:   <none>
Form params:    <none>
Path params:    <none>
Headers:        Authorization=sso-key APIKEY:APISECRET
                Accept=application/json
                Content-Type=application/json; charset=UTF-8
Cookies:        <none>
Multiparts:     <none>
Body:           <none>
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
null
23

===============================================
Default Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================


Process finished with exit code 0

我已经用谷歌地图以完全相同的方式做到了这一点,它按预期工作。

更新 1

以下是 Json 响应的一部分:

[ { "domainId": SENSITIVE INFORMATION, "domain": "SENSITIVE INFORMATION", "status": "ACTIVE", "expires": "2018-08-13T06:37:31Z", "expirationProtected": false, "holdRegistrar": false, "locked": true, "privacy": true, "renewAuto": true, "renewable": true, "transferProtected": false, "createdAt": "2015-08-13T06:37:31Z" }, 

不能在这里粘贴整个东西,因为它太长了。然而,它基本上是这 22 次(总共 23 次),但是 obv。有不同的信息。

标签: javagodaddy-api

解决方案


我希望这行得通。

    DocumentContext js = JsonPath.parse(res);
    JSONArray domains = js.read("$..domain");
    for(int i = 0; i < domains.size(); i++)
        System.out.println(domains.get(i)); 

获取原始响应对象res并创建 DocumentContext

DocumentContext js = JsonPath.parse(res);

读取 JSONArray 中的所有域

JSONArray domains = js.read("$..domain");

然后迭代

for(int i = 0; i < domains.size(); i++)
    System.out.println(domains.get(i));

推荐阅读