一个接一个地发送HTTP POST请求

时间:2017-11-17 09:31:50

标签: java rest http post soapui

我不知道从哪里开始。

现在的情况:我们有一个导入某些目录的软件。为了测试这个,我们设置了SOAPUI:

a)使用SOAPUI,我们可以向我们的基于Web的软件发送POST请求。在此请求中,我们包括文件地址等。

b)我们的软件然后响应PUT请求告诉我们它是否接受了请求。 SOAP UI没有收到与发送的导入PUT请求相关的进一步响应。

c)然后我们的软件开始导入所述目录/文件。

问题:文件/目录有时可能很大,导入这些文件可能需要相当长的时间。这意味着如果先前的导入完成,则必须每隔几分钟手动检查一次,然后发送下一个导入请求,这是一项繁琐的工作。 我想自动完成此过程。

我们的软件在导入完成后不会发送响应,此外它一次不能处理多于1个导入请求,即只有在上一次导入完成后它才会接受任何更多的导入请求。

我想要做的是让这个过程自动化,即发送一个POST请求,然后在导入完成后发送下一个导入请求。

我的解决方案:我对如何实现它有了一般性的想法,即我的解决方案(一段代码)将发送一个POST请求,并在预定义的时间段(5分钟)之后发送下一个请求。如果POST请求的响应是否定的(意味着我们的软件仍然从先前的请求导入),那么我的解决方案(一段代码)将再等待5分钟,然后再次发送POST请求。如果我们的软件接受POST请求,则意味着先前的导入已完成。通过这种方式,我可以自动执行此过程,并根据需要一个接一个地发送POST请求。

我对此帖的需求:我不知道要使用哪些技术。是否可以使用SOAP UI?或者Java REST ASSURED框架可能是我最好的解决方案?我对任何其他技术持开放态度。此外,如果您认为此解决方案可能无效,请告诉我或建议另一个更好的解决方案。

我需要帮助。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

关于在SoapUI中发送多个请求的可能性 - 可以使用Groovy脚本完成并创建测试套件,例如:

  1. 添加您的请求
  2. 之后添加了一个groovy脚本
  3. example test suite

    groovy脚本将包含您的逻辑。我假设请求可以在几个小时内循环发送,或者某些响应消息没有出现。就像一个REST请求及其解析的JSON响应正在运行一段时间(当然,在您的情况下,您将根据可能的响应消息进行http请求并评估它们):

    import net.sf.json.groovy.*
    import groovy.time.*
    import java.time.*
    
    // send request and parse response
    testRunner.runTestStepByName("Request_1")
    def ResponseMessage = testRunner.testCase.testSteps.("Request_1").testRequest.response.contentAsString
    def jsonSlurper = new JsonSlurper ().parseText(ResponseMessage)
    def response
    
    // set cutoff time
    def currentTime = LocalDateTime.now()
    def cutoffTime = LocalDateTime.now()
    
    use(TimeCategory) {
        cutoffTime = cutoffTime.plusMinutes(2)
    }
    
    //looping until set time
    while (currentTime < cutoffTime){
    // make request
        testRunner.runTestStepByName("Request_1")
        response = jsonSlurper.message
    
        log.info "Response was: " + response
    
        sleep(300000)
        currentTime = LocalDateTime.now()
    
        }
    

    然而,总的来说,SoapUI更像是测试工具,你的问题听起来更像是一些作业调度软件的任务