SOAP LoadRunner
Revision as of 16:08, 24 September 2014 by PeterHarding (talk | contribs)
LoadRunner SOAP Manual Entry
Mercury Virtual User Generator User's Guide > Information for Advanced Users > Programming with the XML API > Enhancing a Recorded Session.
Enhancing a Recorded Session
You can prepare an XML script by recording a session and then manually adding the relevant XML and Vuser API functions.
The following example illustrates how a recorded session was enhanced with Vuser API functions. Note that the only function that was recorded was web_submit_data, which appears in bold.
The first section contains the XML input declaration of the variable SOAPTemplate, for a SOAP message:
#include "as_web.h" // SOAP message const char* pSoapTemplate = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" "<soap:Body>" "<SendMail xmlns=\"urn:EmailIPortTypeInft-IEmailService\"/>" "</soap:Body>" "</soap:Envelope>";
The following section represents the actions of the user:
Action1() { // get response body web_reg_save_param("ParamXml", "LB=", "RB=", "Search=body", LAST); // fetch weather by HTTP GET web_submit_data("GetWeather", "Action=http://glkev.net.innerhost.com/glkev_ws/WeatherFetcher.asmx/GetWeather", "Method=GET", "EncType=", "RecContentType=text/xml", "Referer=http://glkev.net.innerhost.com/glkev_ws/WeatherFetcher.asmx?op=GetWeather", "Snapshot=t2.inf", "Mode=HTTP", ITEMDATA, "Name=zipCode", "Value=10010", ENDITEM, LAST); // Get City value lr_xml_get_values("Xml={ParamXml}", "Query=City", "ValueParam=ParamCity", LAST ); lr_output_message(lr_eval_string("***** City = {ParamCity} *****")); // Get State value lr_xml_get_values("Xml={ParamXml}", "Query=State", "ValueParam=ParamState", LAST ); lr_output_message(lr_eval_string("***** State = {ParamState} *****")); // Get several values at once by using template lr_xml_get_values_ex("Xml={ParamXml}", "Template=" "<Weather>" "<Time>{ParamTime}</Time>" "<Temperature>{ParamTemp}</Temperature>" "<Humidity>{ParamHumid}</Humidity>" "<Conditions>{ParamCond}</Conditions>" "</Weather>", LAST ); lr_output_message(lr_eval_string("***** Time = {ParamTime}, Temperature = {ParamTemp}, " "Humidity = {ParamHumid}, Conditions = {ParamCond} *****")); // Generate readable forecast lr_save_string(lr_eval_string("\r\n\r\n*** Weather Forecast for {ParamCity}, {ParamState} ***\r\n" "\tTime: {ParamTime}\r\n" "\tTemperature: {ParamTemp} deg. Fahrenheit\r\n" "\tHumidity: {ParamHumid}\r\n" "\t{ParamCond} conditions expected\r\n" "\r\n"), ParamForecast" ); // Save soap template into parameter lr_save_string(pSoapTemplate, "ParamSoap"); // Insert request body into SOAP template lr_xml_insert("Xml={ParamSoap}", "ResultParam=ParamRequest", "Query=Body/SendMail", "position=child", "XmlFragment=" "<FromAddress>taurus@merc-int.com</FromAddress>" "<ToAddress>support@merc-int.com</ToAddress>" "<ASubject>Weather Forecast</ASubject>" "<MsgBody/>", LAST ); // // "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" // "<soap:Body>" // "<SendMail xmlns=\"urn:EmailIPortTypeInft-IEmailService\"/>" // "<FromAddress>taurus@merc-int.com</FromAddress>" // "<ToAddress>support@merc-int.com</ToAddress>" // "<ASubject>Weather Forecast</ASubject>" // "<MsgBody/>" // "</SendMail>" // "</soap:Body>" // "</soap:Envelope>"; // // Insert actual forecast text lr_xml_set_values("Xml={ParamRequest}", ResultParam=ParamRequest", "Query=Body/SendMail/MsgBody", "ValueParam=ParamForecast", LAST); // Add header for SOAP web_add_header("SOAPAction", "urn:EmailIPortTypeInft-IEmailService"); // Get response body web_reg_save_param("ParamXml", "LB=", "RB=", "Search=body", LAST); // Send forecast to recipient, using SOAP request web_custom_request("web_custom_request", "URL=http://webservices.matlus.com/scripts/emailwebservice.dll/soap/IEmailservice", "Method=POST", "TargetFrame=", "Resource=0", "Referer=", "Body={ParamRequest}", LAST); // Verify that mail was sent lr_xml_find("Xml={ParamXml}", "Query=Body/SendMailResponse/return", "Value=0", LAST ); return 0; }
Back to SOAP ...