2016-06-08 7 views
1

Ich extrahiere eine URL in der Sub-Probe-Anfrage, mit dem Jmeter Regex. Die URL ist mit Escape versehen, zB: hat %3D, %3F. Um diese zu entfernen, habe ich den Beanshell Preprocessor benutzt und alle diese Sonderzeichen ersetzt. Aber wenn ich diese Variable verwenden (url) in der HTTP-Anforderung seines mit eckigen Klammern analysiert zu werdenjmeter HTTP-Anfrage, Beanshell-Präprozessor-Ausgabe wird in eckigen Klammern angezeigt

Code Schnipsel von Bohnenschalen Präprozessor:

url = vars.get("escapedUri"); //get escaped url from the regular expression 
url = url.replaceAll("%3A", ":"); //replace special characters with :,/,=,? 
url = url.replaceAll("%2F", "/"); 
url = url.replaceAll("%3F", "?"); 
url = url.replaceAll("%3D", "="); 
log.info ("escaped uri chng : " + url); 
vars.put("URL", url); 

Die URL, wenn sie in Protokolldatei gedruckt richtig angezeigt wird:

xyz?ID=Login-ID&goto=http://uri/?ReqID=abcdefghijklmnop 

Wenn ich versuche, diese URL-Variable im HTTP-Request-Sampler zu verwenden, wird es wie folgt analysiert.

https://[xyz?ID=Login-ID&goto=http://uri/?ReqID=abcdefghijklmnop] 

jmeter test plan -> 
thread -> 
http request 
    -> regex 
http request 
    -> bean shell preprocessor 

können Sie mir bitte helfen, dieses Problem zu lösen

+0

auch dieses Problem zu sehen, wenn wir integrierte Funktionen verwenden "$ {__ urldecode ($ {escapedUri})}". – karthik

Antwort

1

Meine Erwartung ist, dass Sie verwenden, dass ${URL} Variable in dem „Servernamen oder IP“ Feld, wenn es um „Path“ gehen muss

URL in PATH

Auch ich bin mir ziemlich sicher, dass es möglich ist, mehr "saubere" URL aus dem Regular Expression Extractor zu bekommen. Überprüfen Sie das folgende Material:

+0

danke für die aushilfe. Das Hauptproblem war, dass wir die komplette URL aufteilen müssen. Sobald wir uns in Servername und Pfad aufgeteilt haben, funktionierte es nur noch. – karthik