SOAPUI: HTTPBuilder — невозможно разрешить класс — исключение

Все,

У меня возникла проблема с классом HTTPBuilder в моем скрипте Groovy при попытке POST-запроса в формате XML в WSDL. Что я делаю неправильно?

Ниже мой код:

import groovyx.net.http.HTTPBuilder.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

def baseURL      = "http://server:port"
def pathIn       = "/folder1/folder2"

/* Groovy Utilities Declaration */
def groovyUtils  = new com.eviware.soapui.support.GroovyUtils(context)

/* Request - modified - Holder Setup */
def modRequest       = context.expand('${Groovy Script - Modify Request#Result}')
def modRequestHolder     = groovyUtils.getXmlHolder("modRequest")

/* Define few variables for httpbuilder */
def httpWSDL = new HTTPBuilder(baseURL)
def respReturn = null

// Post the request against the WSDL using (httpbuilder.request(Method POST, ContentType XML); set uri.path to the path after base url of wsdl & body to requestholder.xml
// perform a POST request, expecting XML response
httpWSDL.request(POST, XML){ req ->
    uri.path     = pathIn
    body         = modRequestHolder.xml

    // response handler for a success response code
    response.success = { resp, reader ->

        ret = reader.getXML()

        println 'Response data: -----'
        println respReturn
        println '--------------------'
    }
}

Ниже приведено исключение:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script1.groovy: 26: unable to resolve class HTTPBuilder @ line 26, column 24. 
def httpWSDL = new HTTPBuilder(baseURL) ^ 
org.codehaus.groovy.syntax.SyntaxException: unable to resolve class HTTPBuilder @ line 26, column 24. 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.addError(ClassCodeVisitorSupport.java:146) 
at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:222) 
at org.codehaus.groovy.control.ResolveVisitor.resolveOrFail(ResolveVisitor.java:232) 
at org.codehaus.groovy.control.ResolveVisitor.transformConstructorCallExpression(ResolveVisitor.java:969) 
at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:646) 
at org.codehaus.groovy.control.ResolveVisitor.transformDeclarationExpression(ResolveVisitor.java:1010) 
at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:638) 
at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:139) 
at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40) 
at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:35) 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:163) 
at org.codehaus.groovy.control.ResolveVisitor.visitBlockStatement(ResolveVisitor.java:1240) 
at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:101) 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:112) 
at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:50) 
at org.codehaus.groovy.control.ResolveVisitor.visitConstructorOrMethod(ResolveVisitor.java:166) 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:123) 
at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1055) 
at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:50) 
at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1183) 
at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:141) 
at org.codehaus.groovy.control.CompilationUnit$10.call(CompilationUnit.java:632) 
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:912) 
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:574) 
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:523) 
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279) 
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258) 
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:613) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:625) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:652) 
at groovy.lang.GroovyShell.parse(GroovyShell.java:643) 
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.java:138) 
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:89) 
at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:79) 
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:138) 
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.runTestStep(AbstractTestCaseRunner.java:213) 
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runCurrentTestStep(WsdlTestCaseRunner.java:47) 
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:139) 
at com.eviware.soapui.impl.wsdl.support.AbstractTestCaseRunner.internalRun(AbstractTestCaseRunner.java:47) 
at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:129) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 1 error 

Примечание. JAR-файлы HTTPBuilder устанавливаются как в папки ext, так и в папки lib (я сделал это после прочтения нескольких форумов). Некоторые из них предложили мне импортировать REST Client. Как мне это сделать? Кроме того, wsdl, над которым я работаю, является службой SOAP. Придется ли мне по-прежнему импортировать плагин REST?

Я очень новичок в SOAPUI и Groovy и нахожу свой путь.

Было бы здорово, если бы кто-нибудь мог мне помочь. Заранее спасибо!


person ssc    schedule 06.04.2015    source источник


Ответы (1)


Я думаю, что если вы скопируете все необходимые файлы jar в папку /ext или /lib, ваш код должен работать. Я думаю, проблема в том, что вы используете * на import для класса пути, который не является пакетом пути, точнее:

import groovyx.net.http.HTTPBuilder.*

должно быть:

import groovyx.net.http.HTTPBuilder

Поскольку groovyx.net.http.HTTPBuilder это непосредственно класс, вы не можете добавить * в конец, поэтому ваш groovy script выдает org.codehaus.groovy.syntax.SyntaxException: unable to resolve class HTTPBuilder

Надеюсь это поможет,

person albciff    schedule 07.04.2015
comment
Спасибо Альбсифф! Да, это ошибка. Я должен прочитать эту часть больше. Спасибо еще раз! - person ssc; 07.04.2015
comment
Когда я сейчас запускаю скрипт, я получаю ошибку groovyx.net.http.ParserRegistry class def not found. Не могли бы вы помочь мне понять, почему я получаю эту ошибку? Все файлы JAR находятся в правильных местах. Я пробовал несколько импортов: import com.sun.org.apache.xml.internal.resolver.CatalogManager; импортировать groovyx.net.http.*; импортировать groovyx.net.http.HTTPBuilder; импортировать статический groovyx.net.http.ContentType.*; импортировать статический groovyx.net.http.Method.*; импортировать javax.xml.parsers.ParserConfigurationException; импортировать groovyx.net.http.HTTPBuilder.RequestConfigDelegate; - person ssc; 08.04.2015
comment
@ssc вы видели ответ в этом вопросе там сказано, что вам нужно добавить jar-файлы http-builder и все jar-файлы зависимостей. Может быть, это поможет :) - person albciff; 09.04.2015