Java 重启-无法主控post方法

Java 重启-无法主控post方法,java,automated-tests,kotlin,gmail-api,rest-assured,Java,Automated Tests,Kotlin,Gmail Api,Rest Assured,斯塔克洛维安的同胞们:) 我已经很久没有使用Gmail API进行Post调用了。 正在尝试使用createDraft和createLabel。 现在我想我已经找到了正确的方法(大部分),但我得到了以下错误: java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <400>. java.lang.AssertionError:1预期失败。 应为状态代码

斯塔克洛维安的同胞们:)

我已经很久没有使用Gmail API进行Post调用了。 正在尝试使用createDraft和createLabel。 现在我想我已经找到了正确的方法(大部分),但我得到了以下错误:

    java.lang.AssertionError: 1 expectation failed.
Expected status code <200> but was <400>.
java.lang.AssertionError:1预期失败。
应为状态代码,但为。
我意识到发生此错误是因为我提出了错误的请求

你们能帮我吗? 这是我的密码:

import io.restassured.RestAssured.*
import io.restassured.http.ContentType
import io.restassured.matcher.RestAssuredMatchers.*
import org.hamcrest.Matchers.*
import org.testng.annotations.Test




class RestAPIAutoTestPost {
    @Test
    fun createLabelInGoogleMail() {
        RestAssured.baseURI = "https://www.googleapis.com/gmail/v1/users/me"
        val accessToken = "ya29.Glw7BEv6***"

        val jsonAsMap = HashMap<String, Any>()
        jsonAsMap.put("id", "labelAPITestNameID")
        jsonAsMap.put("labelListVisibility", "labelShow")
        jsonAsMap.put("messageListVisibility", "show")
        jsonAsMap.put("messagesTotal", "0")
        jsonAsMap.put("messagesUnread", "0")
        jsonAsMap.put("name", "labelAPITestName")
        jsonAsMap.put("threadsTotal", "0")
        jsonAsMap.put("threadsUnread", "0")
        jsonAsMap.put("type", "user")


        given().
                contentType(ContentType.JSON).
                body(jsonAsMap).

        `when`()
                post("/labels?access_token=$accessToken").
        then().
                statusCode(200)
    }

}
导入io.restassured.restassured*
导入io.restassured.http.ContentType
导入io.restassured.matcher.RestAssuredMatchers*
导入org.hamcrest.Matchers*
导入org.testng.annotations.Test
类RestAPIAutoTestPost{
@试验
有趣的CreateLabelingGoogleMail(){
RestAssured.baseURI=”https://www.googleapis.com/gmail/v1/users/me"
val accessToken=“ya29.Glw7BEv6***”
val jsonAsMap=HashMap()
jsonAsMap.put(“id”,“labelAPITestNameID”)
jsonAsMap.put(“labelListVisibility”、“labelShow”)
jsonAsMap.put(“messageListVisibility”、“show”)
jsonAsMap.put(“messagesTotal”、“0”)
jsonAsMap.put(“messagesUnread”,“0”)
jsonAsMap.put(“名称”、“标签名称”)
jsonAsMap.put(“threadsTotal”、“0”)
jsonAsMap.put(“threadsUnread”,“0”)
jsonAsMap.put(“类型”、“用户”)
给定()。
contentType(contentType.JSON)。
正文(jsonAsMap)。
`当`()
post(“/labels?access_token=$accessToken”)。
然后()。
状态代码(200)
}
}
我想我使用HashMap不正确,或者我使用了一些不正确的主体字段。 我才刚刚开始学习重新发行,所以请原谅我这个新问题

谢谢


另外,我非常感谢您对Post方法和将数据放入正文

的任何帮助。我认为您使用重新发布和HashMap是正确的。我认为您从这个API获得了400,因为您指定了
id
属性。通过在谷歌的API浏览器中玩这个,我可以生成400个错误。根据,只需为
发布/创建
指定以下内容:
labelListVisibility
messageListVisibility
名称
id
作为响应的一部分返回给您

RestAssured中的一个好特性是,您可以让它在出现错误时或在任何时候记录发送或接收的内容

记录所有请求:

given().log().all()
记录所有响应:

`when`().log().all()
或者在验证失败时:

`when`().log().ifValidationFails()
使用它会给你一个更准确的解释,为什么你与API的交互失败了,因为它会显示Google正在发送的任何信息。因此,我们可以确定我对
id
的看法是否正确

由于您似乎正在使用Kotlin来实现此目的,您可能希望利用其强大的多行字符串功能,只需手动创建JSON负载:

val body = """
    {
        "labelListVisibility": "labelShow",
        "messageListVisibility": "show",
        "name": "ThisIsATest"
    }
"""

谢谢你的回答和我学到的新东西:)但是,你会笑得很开心的,我的失败是因为我在
之后忘了一个该死的点,当
声明:D这是我能犯的最愚蠢的错误!无论如何,我花了几个小时来解决这个问题XD,非常感谢您提供的
log
kotlin json
功能!