rest-assured - 如何使用 Rest Assured 从 REST 响应(json 或 xml)中提取字段值?
问题描述
我想从字符串类型的 REST 响应(json 或 xml)中提取值。我尝试了以下代码:
final Response response = new ResponseBuilder().setContentType("application/json").setStatusCode(200).setBody("{\"message\":\"hello\"}").build();
Object object = response.path("message");
System.out.println(object);
但它比较
Exception in thread "main" java.lang.NullPointerException: Cannot invoke method getObjectMapperConfig() on null object
at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
at io.restassured.internal.RestAssuredResponseOptionsGroovyImpl.jsonPath(RestAssuredResponseOptionsGroovyImpl.groovy:358)
根本原因是 RestAssuredResponseOptionsGroovyImpl 中的 RestAssuredConfig 对象为空
那么,由于我已经有了字符串响应,如何在没有 get() 或 post() 的情况下正确地从原始字符串响应构造响应对象?
解决方案
您可以尝试以下操作:
RestAssuredResponseOptionsImpl response = new RestAssuredResponseImpl();
response.setConfig(RestAssuredConfig.config());
response.setRpr(new ResponseParserRegistrar());
response.setContentType("application/json");
response.setStatusCode(200);
response.setContent("{\"message\":\"hello\"}");
Object message = response.path("message");
System.out.println(message);
推荐阅读
- javascript - 如何从父类别中排除特定的子类别帖子?
- javascript - 从数组中拆分具有多个分隔符的字符串
- python - RabbitMQ:Pika 连接被对等错误重置
- javascript - 使用 .map 和 .filter 格式化数据
- angular - Angular 7:类型'void []'不可分配给类型
- android - 内部测试轨道应用程序未发布
- wordpress - 我可以将我的 php 代码传递给木材的树枝代码吗
- mysql - 当我使用“或”时,允许的内存大小已耗尽
- django - 只想验证超级用户
- angularjs - 在不使用父索引的情况下创建新的 angularjs 路由(IStateProvider)