2016-07-13 2 views
0

Я пытаюсь захватить необработанный ответ для вызова API REST (POST) в файл с использованием Groovy Script.SOAP UI - как захватить REST raw Response в файле

Я вижу ответ, как показано ниже: RAW, но при создании файла он пуст.

REST Ответ:

HTTP/1.1 401 Unauthorized 
content-length: 0 
Date: Tue 12 jul 2016 12:12:12gmt 
WWW-Autheticate: OAuth 
Server: Jetty (8.1.17V20150415) 

Я использую SOAP UI версии 5.2.

Любая помощь приветствуется.

Groovy Сценарий:

def Date startTime = new Date() 
File it=new File("Result") 
def cur_Time = startTime.getMonth()+1 + "_" + startTime.getDate() 
cur_Time = cur_Time + "_" + startTime.getHours() + startTime.getMinutes() +startTime.getSeconds() 
def fileName = it.name + "_" + cur_Time 
//Request File 
def myXmlRequest="C:\\ConnectivityResults\\"+ "Rest_Request" + fileName+".xml" 
def request=context.expand('${Testcasename#Request}') 
def req = new File (myXmlRequest) 
req.write(request,"UTF-8") 

//Response File 
def myXmlResponse="C:\\ConnectivityResults\\"+ "Rest_Response" + fileName+".xml" 
def response=context.expand('${Testcasename#Response}') 
def res = new File (myXmlResponse) 
res.write(response,"UTF-8") 
+0

Почему бы просто не использовать 'testrunner -A'? – SiKing

ответ

1

Проблема заключается в том, вероятно, не в вашем Groovy сценарий, проблема заключается в том, что ваш запрос неверен и ничего не возвращается в качестве ответа. На основе http-headers вы показываете в вопросе:

HTTP/1.1 401 Unauthorized 
content-length: 0 
Date: Tue 12 jul 2016 12:12:12gmt 
WWW-Autheticate: OAuth 
Server: Jetty (8.1.17V20150415) 

Вы получение 401 Unauthorized ответа вместо 200 OK, и на основе Content-lenght которая 0. Это нормально, что ваш ответ будет пустым, так что нет содержания для сохранения в файле.

EDIT НА ОСНОВУ КОММЕНТАРИЕВ

Если вы хотите также сохранить http-headers в файл, вы можете добавить последующие сниппают ваш Groovy сценария:

def fileName = ... 
// http-headers file 
def httpHeadersFilePath ="C:/ConnectivityResults/Rest_Request${fileName}.txt" 
def ts = testRunner.testCase.getTestStepByName('Testcasename') 
def headers = ts.getTestRequest().response.responseHeaders 
def httpHeaderFile = new File(httpHeadersFilePath) 
httpHeaderFile.text = '' 

headers.each { key, value -> 
    httpHeaderFile.append("${key}:${value}\n",'UTF-8') 
} 

Надеется, что это помогает,

+0

Спасибо albciff. Теперь ясно, спасибо за очень подробный ответ. – Geeme

+0

Есть ли способ захватить ответ (как указано выше) и поместить его в файл? – Geeme

+0

@Geeme, что вы имели в виду? В случае, если ответ пуст, сохраните, например, 'http-headers'? – albciff