Jmeter - Bad request 400 received, although 200 is expected - jmeter

I am trying to understand why i have Bad request when i called my api, but works perfectly fine when using Postman/Supertest(JS).
MY request is as:
Headers as:
Actual request as:
Actual response:
Although, the same request works perfectly fine using Postman.
-I tried Fiddler as well, request seems totally identical, but the response different.
-Using Jmeter v4, but the result is the same on 5.21
Any advice is much appreciated!

You are sending your request as body data with JMeter but in postman, you are sending it as form data. Check the postman headers accordingly.
In JMeter, for the form data, you have to check the Use multipart/form-data in your request sampler like this and add your parameters accordingly in the parameter tab instead of Body.

Related

How to remove request body from subsequent requests in JMeter

I tried to create a test script in JMeter where I log in by using API. I created a test script by BlazeMeter chrome extension.
Some of my API calls fail because I am getting CloudFront error. I found out the issue is that GET requests contain a request body. GET requests cannot contain a request body on CloudFront. When I tried the same get requests in postman without request body, I didn't get any errors. I got the same error in postman if I added a body request. This way I can confirm this is the issue.
I am looking for a way how to remove body request from subsequent GET requests in JMeter to get rid of this error.
This is the original API call (sampler) with POST login api request:
After the POST request there is a redirection to a page that makes other GET api calls to fetch static files such js files, etc. The problem is that these GET requests also contain the same request body as the original POST call.
As you can see I can fetch statis files if I remove body request:
I tried to add preprocessor and postprocessor for original POST request, but I don't know how to access subsequent GET requests. I can access only original POST request:
Is there a filter or a way how to remove body request from GET requests?
I don't think it's possible, at least not with JMeter 5.5
If you take a look at HTTPSamplerBase source code you will see that the request body is being copied fully from the original HTTP Request sampler:
this.sampler = (HTTPSamplerBase) base.clone();
So the options are in:
Raise an enhancement requests via JMeter Github Issues
Amend HTTPSamplerBase code to remove the request data from generated AsyncSamples
Handle embedded resources download manually using Parallel Controller

{"result":560,"type":"exception"} response for axs request in jmeter

I encounter {"result":560,"type":"exception"} response for axs request in jmeter while designing a script to do a load test for a mendix web application. First I encountered untheorized response on login so i used reg. expression extractor to extract CSRF-TOKEN and then login worked fine. after login and try to submit an application, i got {"result":560,"type":"exception"} response. what might be the issue and how can it be solved?
Response body
Response header
Request body
Request header
The issue is that you're sending an incorrect request. Unfortunately we cannot state what exactly is wrong because we need to see both:
Reference successful request including URL, headers and body from i.e. real browser
The request from JMeter which fails including URL, headers and body
So I can only suggest to use a 3rd-party sniffer tool like Wireshark or Fiddler to capture the requests from the real browser and JMeter and compare them. Request must be exactly the same (apart from dynamic parameters which need to be correlated). Given you send the same request as browser does you should get the same (successful) response
Other things to consider:
Check your server log, it might be the case you will figure out the reason from there like it was in this forum thread
Given you have Arabic characters in the request body ensure to use proper encoding, i.e. UTF-8 is always a good choice

Post Request getting failed due to webkitformboundary in JMeter

We have a recorded script using Blaze Meter(HTTPS call) and run in JMeter, One POST request getting failed and shows "500 Internal Server error". In Post request, JSON passed in form of "form-Data" as parameter. When endpoint executed we observed Webkitformbounday in HTTP header, Please give some solution for
HTTPs Request
HTTP Header Manager
POST Request Body
enter image description here
It looks like the recording solution you're using isn't very suitable for building proper HTTP POST request, I would suggest the following amendments:
Untick Use multipart/form-data box in the HTTP Request sampler
Remove issueDetail parameter name and put it to the end of "path"
Change Content-Type header value to application/json
Authorization header value might need to be correlated if the token life span is short
More information: Testing SOAP/REST Web Services Using JMeter

JMeter Cant make GET HTTP request work, works fine in PostMan

I'm trying to do a GET HTTPS Request via JMeter. It is a simple request with content-type=application/json, and an auth token. Now for unknown reasons it works perfectly without any issues/problems in Postman, but in JMeter I'm getting an error.
I'm new to JMeter so I can only assume I am just setting something incorrectly.
The HTTP Request I am sending is:
https://www.server.com/api/userinfo?fields=['id']
In postman I get a 200 response with the expected JSON response.
In JMeter however, it gives me the error:
Could not parse fields query. Must be valid JSON.
I've tried messing with the 'send parameters with the request' option in JMeter by removing the ?fields=['id'] from the Path, and instead setting them in the parameters area, but that gives me the exact same 400 error response code.
Also, if I use the send parameters section, and I look at the request, it doesn't seem to be using the parameters i've set. So I went back to passing the parameter directly in the URL path.
SOLVED:: The issue is that JMeter does not like the usage of double quotes in the Path field. You can get by this by using %22 in place of double quotes. This solved the problem of not receiving an error when passing the parameter through Path.
Add HTTP Request sampler to your Test Plan
Configure it as follows:
You might also need to add HTTP Header Manager as a child of your request and configure it to send the relevant Content-Type header
The sent data can be verified using View Results Tree listener:
Also be aware that you can easily create a JMeter test from Postman by just recording the request using HTTP(S) Test Script Recorder

Response Data for "GET Method"

I am creating different HTTP Requests for a site and taking an access token as a variable from Regular Expression Extractor and using it in another HTTP Request.
The Thread group is working fine; i.e. no error in View Results Tree. But Response data is only coming for the Request with POST Method. Nothing is coming for the Request with GET Method and both requests are taking the access token properly.
In some cases you may get response code 200 ok and request still may fail. In case of your get request that seems to be happening.
Check following:
Headers being sent with get request. (Compare request being sent from JMeter and from real browser.)
Add response assertion to get request to be assure the correctness of the response. (Check what response you get for the request made from browser.)
Make sure you have added cookie manager in the test plan.

Resources