我想知道是否有人可以提供帮助。我正在尝试发送一个 post 请求来创建项目,但我得到了正确的状态代码,但没有返回响应正文。我对 API 相当陌生,所以对此有点困惑。谷歌搜索也无济于事。这是我的代码:-
public void createGoods() {
RequestSpecification httpRequest = RestAssured.given();
RestAssured.baseURI = "http://192.168.0.31:8081/transit-api/clothes?_dc=159053130885&productId=1";
JSONObject requestParams = new JSONObject();
requestParams.put("productId", "1");
requestParams.put("productDeploymentId", "1");
requestParams.put("displayableId", goodsDisplayable);
requestParams.put("createdUserName", "null");
requestParams.put("product", "null");
requestParams.put("productDescription", "");
requestParams.put("createdDate", "null");
requestParams.put("lastEventDate", "null");
requestParams.put("progressDescription", "");
requestParams.put("progressDate", "null");
requestParams.put("active", true);
requestParams.put("treatmentMilestones", "null");
requestParams.put("status", "null");
requestParams.put("stopComment", "");
requestParams.put("primaryIdentifierString", "");
requestParams.put("isPrimaryIdentifierAvailable", false);
httpRequest
.header("Accept", "application/json")
.header("Accept-Language", "en-US,en;q=0.9")
.header("Connection", "keep-alive")
.header("Accept-Encoding", "gzip, deflate, br")
.contentType(ContentType.JSON)
.header("X-Requested-With", "XMLHttpRequest")
.sessionId(sessionId);
httpRequest.body(requestParams.toJSONString());
Response response = httpRequest.request(Method.POST);
System.out.println("RESPONSE body is--->>>>" + response.getBody().asString());
System.out.println("Status code is----------------->>>" + response.getStatusCode());
}
}
我得到的回复如下:-
>>>>
RESPONSE body is---createTreatment----------->>>>*io.restassured.internal.RestAssuredResponseImpl@55259aa7*
Status code is ----------------->>>200
Step failed
java.lang.IllegalStateException: Cannot invoke the path method because no content-type was present in the response and no default parser has been set.
You can specify a default parser using e.g.:
RestAssured.defaultParser = Parser.JSON;
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:247)
at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl$_path_closure5.doCall(RestAssuredResponseOptionsGroovyImpl.groovy:392)
解析是一种从响应中读取数据的方法。将以下内容设置为默认解析器。
RestAssured.defaultParser = Parser.JSON;
result read!
尝试为 REST 保证设置默认解析器:
RestAssured.defaultParser = Parser.JSON;
请参阅此处的示例:https://github.com/rest-assured/rest-assured/blob/rest-assured-4.3.0/examples/rest-assured-itest-java/src/test/java/io/restassured/itest/java/DefaultParserITest.java#L44-L52
或者,确保您正在测试的服务返回有效的Content-Type
HTTP 响应标头。