2014-04-18 43 views
0

上。在soapUI的模擬請求OnRequest腳本選項卡中運行這個下面Groovy腳本,我得到下面的錯誤OnRequest標籤的soapUI錯誤

mockRunner.returnFile(mockRequest.httpResponse, new File(projectDir,"xmlresponse.xml")) return new com.eviware.soapui.impl.wsdl.mock.WsdlMockResult(mockRequest)

ERROR:An error occurred [groovy.lang.MissingMethodException: No signature of method: com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.returnFile() is applicable for argument types: (org.mortbay.jetty.Response, java.io.File) values: [HTTP/1.1 200 

, C:\UXX\XXXX\AAAAA\xmlresponse.xml]], see error log for details 

任何幫助表示讚賞。謝謝。

編輯:

我想你的建議,但得到這個錯誤。 You cannot create an instance from the abstract interface.然後我嘗試了一種不同的方式,通過搜索網絡發現。

def response = mockRequest.httpResponse 
File file = new File("C:/Users/xx/xx/xxx/xmlresponse.xml") 
FileInputStream fin = new FileInputStream(file); 
response.setStatus(HttpServletResponse.SC_OK) 
long length = file.length(); 
response.setContentType("application/xml;charset=utf-8"); 
Tools.readAndWrite(fin, length, response.getOutputStream()); 
fin.close(); 
return new com.eviware.soapui.impl.wsdl.mock.WsdlMockResult(mockRequest) 

但是,這個問題是我得到了JSON和響應方的原始選項卡中的XML響應。當我在上面的代碼中將內容設置爲xml,如response.setContentType("application/xml;charset=utf-8"),它不會在json和xml選項卡中提供任何內容,但會在raw選項卡中給出xml內容的響應。如何將xml內容返回到xml選項卡中?

+0

雖然我仍然收到錯誤,但找到了一種方法來實現我想用soapUI 5.0.0中的新功能「Rest Mocking」實現我想要的功能。但如果有人對此錯誤有所瞭解,請告訴我。謝謝。 – user1207289

回答

0

我是有肥皂UI 5

對方回答是在理論上是正確我模擬REST請求/響應完全相同的問題,創造了一個Groovy腳本的響應是實際可行的。但是,Groovy OnRequest腳本存在一些問題。 下面的代碼段我以前(從這個問題HEREDivxYoda提供)創建一個有效的XML響應:

com.eviware.soapui.impl.wsdl.mock.WsdlMockResult mockResult = new com.eviware.soapui.impl.wsdl.mock.WsdlMockResult(mockRequest) 

def httpResponse = mockRequest.httpResponse 
httpResponse.setContentType("application/xml;charset=utf-8") 
httpResponse.writer << "<root><user>ABC</user></root>" 
httpResponse.status = 200 
return mockResult 

測試,併爲我的偉大工程!

+0

謝謝!使用上面的代碼,我可以將XML內容返回到xml選項卡中。 – user1207289

1

com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.returnFile()函數接受

javax.servlet.http.HttpServletResponse 

and File 

,而不是javax.servlet.http.HttpServletResponse您發送org.mortbay.jetty.Response。要發送javax.servlet.http.HttpServletResponse值,你可以做這樣的事情..

import javax.servlet.http.HttpServletResponse; 

def response = new HttpServletResponse(); 

response.setStatus(200) 
response.setContentType("text/xml;charset=UTF-8"); 

鏈接:Values not passing from TextBox to Servlet File

,然後響應變量傳遞給returnFile()功能。

注意:該代碼未經測試!

+0

我根據你的建議和新發現編輯了上面的帖子,因爲它不適合這裏。 – user1207289