2016-06-28 3 views
0

Ich habe ein LR-Skript und ich verwende, um eine REST-API aufzurufen, um eine Datei herunterzuladen. Die Datei wird erfolgreich heruntergeladen, aber ich brauche auch den Wert der Datei, die zur Überprüfung heruntergeladen wurde. Hier ist, was ich in LoadRunner-Konsole sehe.Wie kann ich einen Wert aus der Antwort von web_custom_request in LoadRunner abrufen

Action.c(50): web_custom_request("GetImage") was successful, 2373709 body bytes, 528 header bytes, 99 chunking overhead bytes. 

Wie kann ich den Wert 2373709 erhalten? Ich habe versucht, den folgenden Code zu verwenden, aber die Größe, die es zurückgibt, ist ein wenig anders als die oben genannten und löst nicht den Zweck.

HttpDownLoadSize=web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE); 
lr_output_message("File Size %i", HttpDownLoadSize); 

Jede Hilfe wäre willkommen. Vielen Dank im Voraus für Ihre Hilfe.

+0

So gibt es keine Möglichkeit, nur den Wert von Körper Bytes in Last Runner zu erhalten ? –

Antwort

2

HTTP_INFO_DOWNLOAD_SIZE Eigenschaft speichert die letzte HTTP-Antwort Gesamtgröße Download. Dies umfasst die Gesamtgröße der Header und Körper aller Antworten und möglichen Kommunikationsaufwand. 2373709 body bytes ist die Gesamtkörpergröße aller Antworten in einem bestimmten Schritt. Wenn also in Ihrem benutzerdefinierten Anforderungsschritt mehrere Anforderungen/Antworten vorhanden sind, ist diese Anzahl größer als die tatsächliche Dateigröße.

Ich würde vorschlagen, Ihre Antwort Körpergröße zu validieren. Es gibt jedoch keine Standard-API zum Abrufen (zumindest in LR 12.53, der neuesten verfügbaren Version). Soweit ich sehe, ist Ihre Antwort chunked, so kann ich Ihnen keine effizienten Methoden vorschlagen, dies zu tun. Hier ist eher ineffiziente Methode, basierend auf den gesamten Körper in einen temporären Puffer gespeichert wird (zweimal!):

unsigned long length = 0; 
char* tmp = 0; 

web_reg_save_param_ex(
    "ParamName=Body", 
    "LB=", 
    "RB=",     
    SEARCH_FILTERS, 
    "Scope=Body", 
    "RelFrameID=1", 
    LAST); 

web_custom_request(...); 

lr_eval_string_ext("{Body}", strlen("{Body}"), &tmp, &length, 0, 0, -1); 
lr_output("body length is %d", length); 
lr_eval_string_ext_free(&tmp); 

Auch müssen Sie die maximale HTML-Parameter Länge mit web_set_max_html_param_len() erhöhen.

Wenn Sie jedoch eine nicht-chuncked nicht komprimierte Antwort enthält Content-Length Header haben, konnte man es effiziente validieren:

web_reg_find("Text=Content-Length: 2373709", 
    "Search=Headers", 
    "RelFrameID=1", 
    LAST); 
web_custom_request(...); 
+0

Nun, ich wollte gerade meine eigene Frage beantworten, da ich eine Lösung gefunden hatte, als ich Ihren Beitrag bemerkte. Was Sie erwähnt haben, ist richtig und ich habe das Gleiche getan. Ich habe 'lr_eval_string_ext' verwendet, um die Länge der Body-Bytes zu ermitteln, und das hat mein Problem gelöst. Vielen Dank für Ihre Antwort. –

Verwandte Themen