java - 多个 POST 请求在第二秒出现 500 错误

标签 java rest-assured

我需要一一发送很多请求。我有一个代码:

   public void sendRestRequest(String xmlFile){

        try{
            String myRequest = generateStringFromResource(xmlFile);
            given().auth().basic(prop.getProperty("restLogin"), prop.getProperty("restPassword"))
                    .contentType("application/xml")
                    .body(myRequest.getBytes(StandardCharsets.UTF_8))
                    .when()
                    .post(prop.getProperty("restURL"))
                    .then().
                    assertThat().statusCode(200).and().
                    assertThat().body("status", equalTo("UPLOADED"));
            }
        catch (Exception e){ LOG.error(String.valueOf(e)); }
    }

public static String generateStringFromResource(String path) throws IOException {
        return new String(Files.readAllBytes(Paths.get(path)));
    }

我可以成功创建第一个请求。但在第二个中我有 500 状态代码而不是 200。以及这样的错误消息:

at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:483)
        at io.restassured.internal.ResponseSpecificationImpl$HamcrestAssertionClosure$validate$1.call(Unknown Source)
        at io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:655)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
        at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:123)
        at io.restassured.specification.ResponseSpecification$statusCode$0.callCurrent(Unknown Source)
        at io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:131)
        at io.restassured.internal.ValidatableResponseOptionsImpl.statusCode(ValidatableResponseOptionsImpl.java:119)

可能有人有想法吗?我想这应该是某种更紧密的联系或类似的东西。

最佳答案

在服务器端,问题出在 xml 文件上,但这很奇怪,因为如果我第一次发送同一个文件,则没有问题。经过一番尝试,我决定使用不同的方法,效果很好:

public void sendRestRequest(String xmlFile) throws IOException {
        FileInputStream fis = new FileInputStream("configuration.properties");
        prop.load(fis);
        try {
            URL url = new URL(prop.getProperty("restURL"));
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/xml");
            conn.setRequestProperty("Authorization", prop.getProperty("basic"));

            String input = generateStringFromResource(xmlFile);

            OutputStream os = conn.getOutputStream();
            os.write(input.getBytes());
            os.flush();

            if (conn.getResponseCode() != 200) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }

            BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
            StringBuilder responseStrBuilder = new StringBuilder();

            String output;
            while ((output = br.readLine()) != null) {responseStrBuilder.append(output);}

            conn.disconnect();

            JSONObject result = new JSONObject(responseStrBuilder.toString());
            Assert.assertEquals(result.getString("status"), "UPLOADED");

        } catch (IOException e) {
            LOG.error(String.valueOf(e));
        }
    }

关于java - 多个 POST 请求在第二秒出现 500 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55904375/

相关文章:

java - JsonPath 中的通配符

rest-assured - 如何在放心的 API 测试中处理上传文件?

java - 有没有一种方法可以比较数组和数组列表?

java - 为什么 Period.between 没有按预期工作

java - Java 7 API 文档中的 "concurrent"和 "thread-safe"有什么区别?

java - 使用Java解析XML转换为Json

java - 当 JSON 键以数字开头时,Rest-Assured IllegalArgumentException

java - 如何跳过Salesforce的登录页面?

java - 没有可用于具有名称的 bean 属性的 getter 方法

java - Swing 工具栏放置