为了账号安全,请及时绑定邮箱和手机立即绑定

多个放心的 POST 请求在第二次出现 500 错误

多个放心的 POST 请求在第二次出现 500 错误

子衿沉夜 2022-10-26 16:31:24
我需要一一发送许多请求。我有一个代码:   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)可能有人有想法吗?我想这应该是一些更紧密的联系或类似的东西。
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

在服务器端,问题出在 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));

        }

    }


查看完整回答
反对 回复 2022-10-26
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信