java - 请放心 : Getting org. apache.http.ConnectionClosedException:Content-Length 分隔的消息正文过早结束

标签 java rest-assured rest-assured-jsonpath

我试图在代码中使用原始主体调用“put”api 调用,但出现以下错误

org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 69; received: 68
    at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:178)
    at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:135)
    at org.apache.http.conn.EofSensorInputStream$read.call(Unknown Source)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.convertStreamToByteArray(RestAssuredResponseOptionsGroovyImpl.groovy:470)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:101)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite$StaticMetaMethodSiteNoUnwrapNoCoerce.invoke(StaticMetaMethodSite.java:149)
    at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:100)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:208)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.charsetToString(RestAssuredResponseOptionsGroovyImpl.groovy:522)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl$charsetToString$4.callCurrent(Unknown Source)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.asString(RestAssuredResponseOptionsGroovyImpl.groovy:183)
    at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.asString(RestAssuredResponseOptionsGroovyImpl.groovy:179)
    at io.restassured.internal.RestAssuredResponseOptionsImpl.asString(RestAssuredResponseOptionsImpl.java:234)
    at com.NexusPortalAutomation.Utilities.Java.restAssured.cancelSpa(restAssured.java:70)
    at com.NexusPortalAutomation.Utilities.Java.restAssured.test(restAssured.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

代码:

        char q ='"';
    RestAssured.baseURI = "http://localhost:3000/api/v1/spa/cancel/" + spaIndex;
    String rawbody ="{"+q+"SpaCancel"+q+":[{"+q+"CustomerId"+q+":"+q+Customer+q+","+q+"SpaIndex"+q+spaIndex+q+"CancelDate"+q+":"+q+"2020-06-08"+q+","+q+"CancelReason"+q+":"+q+"Test"+q+","+q+"ReasonCode"+q+":"+q+" "+q+"}]}";
    RequestSpecification httpRequest = RestAssured.given().headers("Authorization", "Bearer " + getToken(),
        "Content-Type", ContentType.JSON, "Accept", ContentType.JSON) ;

    Response response = httpRequest.body(rawbody).put();

    String body = response.getBody().asString();
    System.out.println(body);

最佳答案

我针对测试 PUT 端点测试了您的代码,它在我的机器上运行良好。我敢打赌,您看到的错误消息表明您的 http://localhost:3000/api/v1/spa/cancel/ 的响应有问题。如错误所示,内容长度与实际返回的内容不匹配。

关于java - 请放心 : Getting org. apache.http.ConnectionClosedException:Content-Length 分隔的消息正文过早结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62266555/

相关文章:

java - 使用 Rest Assured 从 JSON 响应中获取所有 id

Java - 在 KeyStore 中存储 key 对

java - 我的计算机中的 Java SDK 文件夹在哪里? Ubuntu 12.04

java - 放心java.net.SocketException

java - 有没有办法根据另一个元素值查找 JSON 响应元素值?

java - 使用 Rest Assured 从 JSON API 获取唯一属性

java - 一种具有数万个非常大文件的 IDE 使用的快速子字符串搜索算法

java - Java中的动态文本框

java - 如何使用 Rest Assured 在同一 API 主体上发送 String[] 和 String 值?

放心。期望定义了一个以上属性值的数组元素