How to read a value of Location from response header in jmeter? - jmeter

I am getting below Header Response :-
HTTP/1.1 202 Accepted
Content-Length: 0
Location: https://localhost:111/api_path/916e0a93-552f-46fd-84c4-6cecac92209a
Server: Microsoft-IIS/10.0
X-SourceFiles: =?UTF-8?B?RDpcR2l0SHViXFJNTVxFZGdlUHJvdG90eXBlXEVkZ2VQcm90b3R5cGVcYXBpXHYxXFNubXBcR2V0VjFBc3luYw==?=
X-Powered-By: ASP.NET
Date: Thu, 30 May 2019 13:13:24 GMT
how can I use regular expression to capture the below value from Location ?
916e0a93-552f-46fd-84c4-6cecac92209a
I am not saving my response in file and i want a value of Location from Response Header
I tried below way but getting NOT FOUND as it is default, if i remove default then it will show null

Replace your regular expression with
Location: https:.+api_path\/(.*?)\n
Make sure you use Apply to Main sample only.

Related

Extracting JSON from a string response using Apache JMeter

I am making an HTTP request using Apache JMeter.
The response has the following format:
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
x-powered-by: Express
access-control-allow-origin: *
access-control-allow-methods: HEAD, POST, PUT, GET, OPTIONS, DELETE
access-control-allow-headers: origin, content-type, X-Auth-Token, Tenant-ID, Authorization
content-type: application/json; charset=utf-8
content-length: 24
etag: W/"18-8MkH0L5c1ZW7PPuEY1rZ3jKFme0"
date: Thu, 08 Apr 2021 12:28:37 GMT
x-envoy-upstream-service-time: 90
server: envoy
{"id":"548b23a3.4f6a4c"}
I need a way to extract the JSON id value to a variable to make another one request.
JSON extractor needs a pure JSON format as response but in my case i need to skip all these headers from the body response.
Any ideas how could i make it with the Apache JMeter?
If you really have all this as a part of response body (however it looks like Headers to me) you should always be able to fall back to the Regular Expression Extractor which doesn't have any limitations.
Example regular expression:
"id"\s*:\s*"(.+?)"}
Demo:
Explanation:
\s - meta character for whitespace
* - any number of whitespaces
. - match any character
+ - repetition
? - don't be greedy, stop at first match
More information:
JMeter: Regular Expressions
Using RegEx (Regular Expression Extractor) with JMeter
Perl5 Regex Cheat Sheet
Another clean way is to use is JSON Extractor (Post Processor). This is pretty helpful when you will have complex json (multiple nested objects) returned.
More details here: https://octoperf.com/blog/2017/03/09/how-to-extract-data-from-json-response-using-jmeter/#jmeter-jsonpath-plugin

Mail RFC embedded image using cid for text/plain

While I remember email messages could contain embedded images in HTML and plain text I noted today Outlook 2013 and Windows 10 Mail app does not display it.
Is this something the RFC standard has removed the "[cid:]" definition?
Below is the formatted mail:
(save as *.eml to display its content)
MIME-Version: 1.0
Date: Tue, 6 Feb 2018 10:12:53 +0100
From: Test User 2 <test.user2#lab.local>
Subject: TEst in plain text
Thread-Topic: TEst in plain text
To: Test User 1 <test.user1#lab.local>
Content-Type: multipart/mixed;
boundary="_60A9E784-DBBE-4378-9A84-01D36C2226AF_"
--_60A9E784-DBBE-4378-9A84-01D36C2226AF_
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
test
[cid:BBCLOGO#23AD2D600E]
--_60A9E784-DBBE-4378-9A84-01D36C2226AF_
Content-Type: image/jpg; name="23AD2D600EF4C69FF4D5479A8BB7FE73.jpg"
Content-ID: <BBCLOGO#23AD2D600E>
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="23AD2D600EF4C69FF4D5479A8BB7FE73.jpg"
/9j/4AAQSkZJRgABAgAAZABkAAD/2wBDAAIBAQEBAQIBAQIDAgECAwMCAgICAwMDAwMDAwMFAwQE
BAQDBQUFBgYGBQUHBwgIBwcKCgoKCgwMDAwMDAwMDAz/2wBDAQICAgQDBAcFBQcKCAcICgwMDAwM
DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAyADIDAREA
AhEBAxEB/8QAHAAAAgIDAQEAAAAAAAAAAAAAAAcFCAIEBgMJ/8QAOBAAAQIFAQYBBw0BAAAAAAAA
AQIDAAQFBhETBwgSITFRQTQ1QmFicYEUFiIyMzZDY3KEkZSh8P/EABoBAAIDAQEAAAAAAAAAAAAA
AAAFAgMEBgH/xAAnEQACAgECBQMFAAAAAAAAAAAAAQIRAwQxBRIhUYEyQcEiYZHw8f/aAAwDAQAC
EQMRAD8A+mmqvvHWUJw1V94KAk7YtG67zmzJWzJuTTqcaikBKUIz041rwlOccsmKsmWONXJ0SjBy
2Oxn93W76Lbc3cVbmWwZZovCUkm1zLyiPROAgD1kE4HOMsdfCUkkvguenaVsXeqvvG+jOGqvvBQB
qr7wUBjABtUOmKrVak6MhXAubfalgrGcF1wIzj4xGcuVN9j2Kt0Wyt23KPalIaodCZSxT2RhKU9V
HxUo+Kj4kxzGTI5u2NYxUVSN6IEhBbzVl0e3Lgkq7R2ksCqJeMwy2MI1WSjKwByBUFjOPEZ6kw74
dmc4tP2MGpgk7XuLKGJmCAAgAmNnzM1MX1R0SbZdmBOSywhHMkIeSs/wBmKs7ShK+xPH6kWyjmBq
EACd3tZeZXLUKbSgmTbVNtrc9ELcDSkpPrIQT8Ia8La+rwY9WthLw3MYQAEAEhalbNtXNT7g4StM
nMNTCm0nBWlCwpSQT0yMiIZYc8Wu6JQlTTLbsPszTCJmXUFsOJC0LT0UlQyCPeI5dqhsZx4Ak962
4kO1GmWq0DxMoXPPHIxl06SBjuAhR+MOOGY+jl4MWql1SFDDQyBAAQAEAFm9hE9P1HZVSX6ivjcS
h1htRAB0mX1stg47JSB7hHO62KWV0MsDuCOvjKXFV9rdQqFR2lVp6pK4nkTb0ujljDTKy00AB7CR
7+sdLpYpY412FeV3JnOxeVhABk006+4llhJW8shKUJBJJPIAAQN0B3dm7u9+3OUTFUbFJpZwS5OA
6xHssjCs/qKYxZdfCG3Vl8NPKX2LDUyny9Jp0vS5QYlJZtEu0D4IbSEJ/wAEIZS5nYwSpUe8eHor
9tmw2rXxWPnVbLzQqGkhp6UeyjULecKS5zGSCBggDl1hlo9Ysa5ZbGXNgcnaErcNqXHak38iuOSd
lH8kJ1kkJXjqULH0VD1pJhvjyxmri7McoOO5HxMiOfdf+zd82dXOnnXw6/lwp4j5+P6bNN4+Rxwp
NgQAEABABD3591pryD6o8++RdfxItwepb+NyGTb28lZP6Hl//ft46L87fvkWH//Z
--_60A9E784-DBBE-4378-9A84-01D36C2226AF_--
You're referring to RFC 2387, "The MIME Multipart/Related Content-type"
To refer to an attachment by the value of its Content-ID (CID) MIME header field, it's as simple as:
<img src="cid:BBCLOGO#23AD2D600E">
Note that your body must be HTML, such as Content-Type: text/html; chaset="us-ascii", as indicated by RFC 2045 ยง5.
Outlook should do this automatically when you place images in your message body. If you need further help configuring that, there is probably a more appropriate Q&A site than (the programming-centric) Stack Overflow.

capturing response header in Jmeter and use it as variable in another request

I want to capture response Header Location : specifically 100 number so i can use it as variable in another request. How can i do this ?
Request
Remote Address: 57.98.32.25:80
Request URL:http://57.98.32.25/new_events
Request Method:POST
Status Code:200 OK
Response Headers
Cache-Control:no-cache
Connection:close
Content-Encoding:gzip
Content-Length:105
Content-Type:text/html;
Date:Thu, 27 Aug 2015 06:37:31 GMT
Location:http://57.98.32.25/new_events/100
Server:Apache/2.2.15
You can do it via Regular Expression Extractor configured as follows:
Field to check: Response Headers
Reference Name: anything meaningful, i.e. location
Regular Expression: new_events/(\d+)
Template: $1$
You may also need to switch "Apply to" value to "Main sample and sub-samples" if there are redirects and the Location header is not available in the main sample, use View Results Tree listener to determine it.
Refer extracted value as ${location} or ${__V(location)} where required.

The safest way to add a header and a footer to an e-mail?

I am busy writing the last bit of an SMTP relay engine. Basically, people send mail to this SMTP address, it gets piped to files, analyzed, and then headers and footers are added to the body. My problem is, I'm not sure if my way of altering the mail will work for all cases. Basically, if I have this:
Return-path: <XXXX#YYYY>
Envelope-to: system-filter
Delivery-date: Thu, 25 Sep 2014 12:43:53 +0200
Received: from localhost ([127.0.0.1]:XXXX helo=XXXX.XXXX.com)
by XXXX.XXXX.com with XXXX(XXXX-XXXX-XXXX-XXXX:XXXX)
(Exim XXXX)
(envelope-from <XXXX#XXXX.XXXX>)
id XXXX-XXXX-67
for XXXX.XXXX#XXXX.com; Thu, 25 Sep 2014 12:43:52 +0200
Received: from XXXX.XXXX.XXXX.XXXX ([197.87.204.210]) by XXXX.XXXX.com
(Horde Framework) with HTTP; Thu, 25 Sep 2014 10:43:50 +0000
Date: Thu, 25 Sep 2014 10:43:50 +0000
Message-ID: <XXXX.Horde.XXXX#XXXX.XXXX.com>
From: XXXX#XXXX.XXXX
To: XXXX.XXXX#XXXX.com
Subject: This is the subject
User-Agent: Internet Messaging Program (IMP) H5 (XXXX)
Content-Type: text/plain; charset=UTF-8; format=flowed; DelSp=Yes
MIME-Version: 1.0
Content-Disposition: inline
X-OutGoing-Spam-Status: No, score=-2.9
And this is the message.
The idea was to either:
1. Just find the first blank line and put the header there, and then just append the footer to the end.
2. Use PHP Mime Mail Parser to alter the body
The problem with 1 is that I think there might be different formats coming in that don't follow the normal layout. The problem with 2 is, I'm limited to whatever the mail parser can parse.
So, what is the safest way to relay e-mails as I've desribed?
Just prepending or appending something to a message body will not work. It will not work because the message can by multipart (e.g. with attachments) or encoded (e.g. base64). PHP Mime Mail Parser seems to be able to handle these cases, but it doesn't have a method to save the modified message.
I would recommend using some email parsing library which can write messages, not just read. For example, Python standard library has email package which can do what you need. However, you would have to check if the message is multipart and if so add the header and the footer to the right part (i.e. to the actual content and not to an image or attachment). You will also need to check whether the message is plain text or HTML and have your header and footer formatted appropriately.

Dealing with ISO-encoding in AJAX requests (prototype)

I have a HTML-page, that's encoded in ISO-8859-1 and a Prototype-AJAX call that's build like this:
new Ajax.Request('api.jsp', {
method: 'get',
parameters: {...},
onSuccess: function(transport) {
var ajaxResponse = transport.responseJSON;
alert(ajaxResponse.msg);
}
});
The api.jsp returns its data in ISO-8859-1. The response contains special characters (German Umlauts) that are not displayed correctly, even if I add a "encoding: ISO-8895-1" to the AJAX-request. Does anyone know how to fix this?
If I call api.jsp in a new browser window separately the special characters are also corrupt. And I can't get any information about the used encoding in the response header. The response header looks like this:
Server Apache-Coyote/1.1
Content-Type application/json
Content-Length 208
Date Thu, 29 Apr 2010 14:40:24 GMT
Notice: Please don't advice the usage of UTF-8. I have to deal with ISO-8859-1.
Just found the answer myself. Though this is for PHP I'm sure you can find the equivalent for ASP :)
Basically, just include the encoding header on your response page (in your case api.asp), like this:
header("Content-Type: text/html; charset=ISO-8859-1");
Good luck with it :)
//Jannik Olsen

Resources