我正在尝试以字符串形式获取所有请求详细信息(请求 url、代理、 header 、正文等),因为我需要将其重定向到 logback 日志文件。我声明了一个公共(public)基类,在其中声明了请求变量 (io.restassured.specification.RequestSpecification)
我在我的stepDef类的默认构造函数中使用这个基类。每个stepDef 类都有其唯一的log 实例。我尝试过使用这里的解决方案:How to get rest-assured log into something printable in a text file但没有成功
我尝试过以下解决方案:
RestAssured.config = RestAssured.config().logConfig(new LogConfig(baseClass.loggerPrintStream.getPrintStream(), false));
baseClass.request.config(RestAssured.config().logConfig(new LogConfig(baseClass.loggerPrintStream.getPrintStream(),true))).log().all();
baseClass.request.filter(new RequestLoggingFilter(baseClass.loggerPrintStream.getPrintStream()));
以上似乎都没有为我解决问题。我想要的只是以字符串形式获取完整的请求规范 (baseClass.request),以便我可以将该字符串写入日志文件并提供更多详细信息。
最佳答案
如果您有 RequestSpecification
,您可以使用 QueryableRequestSpecification
从请求中获取数据,如下所示:
RequestSpecification requestSpecification = given()
.auth()
.preemptive()
.basic("username", "password")
.contentType("application/json")
.header("x-api-key", "some api key");
QueryableRequestSpecification queryable = SpecificationQuerier.query(requestSpecification);
System.out.println("Header is: " + queryable.getHeaders().get("x-api-key"));
您可以将其保存到文件中,而不是将规范打印到控制台。
关于java - 以字符串形式获取放心的请求规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57183721/