Returning custom body with HTTP status error - httpresponse

I have a strange problem, I am testing on two different servers,
first server with a basic apache
second server with Zend Server
What I am trying to do it's to call an url on that server with cURL, this url can return one of the following codes: 200, 406 with a json body containing a message.
When querying the Apache server, on 406 error, I get this:
< HTTP/1.1 100 Continue
< HTTP/1.1 406 Not Acceptable
< Date: Wed, 10 Dec 2014 11:16:01 GMT
< Server: Apache/2.4.10 (Ubuntu)
< Content-Length: 75
< Content-Type: application/json
* HTTP error before end of send, stop sending
<
{"status":406,"message":"Domain not found (is the file named correctly ?)"}* Closing connection 0
And when querying the Zend Server, I get this:
< HTTP/1.1 100 Continue
< HTTP/1.1 406 Not Acceptable
< Date: Wed, 10 Dec 2014 11:15:05 GMT
< Connection: Keep-Alive
< Content-Type: text/html; charset=iso-8859-1
< Content-Length: 261
* HTTP error before end of send, stop sending
<
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /webservice could not be found on this server.</p>
</body></html>
* Closing connection #0
* SSLv3, TLS alert, Client hello (1):
The header type is changed to text/html from application/json, and the body is a plain html error page.
Is this a Zend server issue ?

I dont think it is an issue with either server. The error code returned by both the servers is 406 but the error message in the http response body is sent as json in apache and html in zend server, hence the different content-types.
The two servers have chosen to send the error message in different formats hence the diffent content-types.

Related

karate framework graphql error on standalone [duplicate]

This question already has an answer here:
Unable to use read('classpath:') when running tests with standalone karate.jar
(1 answer)
Closed 1 year ago.
I have a simple graphql which works well in the maven build but getting error when executed as a feature file with the standalone karate jar.
Here is the graphql used in request
getCustomerById.graphqls
-----------------------
query{
getCustomerById(custid: "12345"){
custid
firstname
lastname
address1_text
address2_text
city_text
state_text
zip_text
}
}
-------------------------
#Feature file
graphql.feature
* configure ssl = { keyStore: 'classpath:customer/test.pfx', keyStorePassword: 'test123', keyStoreType: 'pkcs12' }
Given url 'https://<IT_URL>/graphql-data/v1/graphql'
* def customerRequest = read('getCustomerById.graphqls')
And def variables = { customerid: '123456'}
And request { query: '#(query)', variables: '#(variables)' }
When method post
Then status 200
* print 'Response ==>', response
getting the following error
======
18:31:42.699 [main] WARN com.intuit.karate.JsonUtils - object to json serialization failure, trying alternate approach: [B cannot be cast to [Ljava.lang.Object;
18:31:42.701 [main] DEBUG com.intuit.karate - request:
2 > POST https://<ITURL>/graphql-data/v1/graphql
2 > Content-Type: application/json; charset=UTF-8
2 > Content-Length: 62
2 > Host: it-xxx-dns.com
2 > Connection: Keep-Alive
2 > User-Agent: Apache-HttpClient/4.5.13 (Java/1.8.0_291)
2 > Accept-Encoding: gzip,deflate
{"variables":{"customerId":"792798178595168"},"query":"[B#7ca8d498"}
18:31:43.060 [main] DEBUG com.intuit.karate - response time in milliseconds: 357
2 < 200
2 < Date: Wed, 30 Jun 2021 23:31:42 GMT
2 < Content-Type: application/json;charset=UTF-8
2 < Content-Length: 109
2 < Connection: keep-alive
2 < Access-Control-Allow-Origin: *
2 < Access-Control-Allow-Methods: *
2 < Access-Control-Max-Age: 3600
2 < Access-Control-Allow-Headers: authorization, content-type, xsrf-token
2 < Access-Control-Expose-Headers: xsrf-token
2 < Vary: Origin
2 < Vary: Access-Control-Request-Method
2 < Vary: Access-Control-Request-Headers
2 < Strict-Transport-Security: max-age=15724800; includeSubDomains
2 < Set-Cookie: INGRESSCOOKIE=1625095903.954.332.448531; Domain=it-i3-xxx-dns.com; Secure
{"errors":[{"description":"Invalid Syntax : offending token '[' at line 1 column 1","error_code":"400-900"}]}
18:31:43.061 [main] INFO com.intuit.karate - [print] Response ==> {
"errors": [
{
"description": "Invalid Syntax : offending token '[' at line 1 column 1",
"error_code": "400-900"
}
]
}
======
Can you please let me know what's wrong with the code. Is it because of the SSL and passing the pfx file it behaves differently in the standalone jar . I'm not able to find out but it works perfectly fine in the maven build
Yes in stand-alone mode it is preferred you use file: instead of classpath: unless you know how to properly set the class-path.
Please read this for more info and try to figure this out: https://stackoverflow.com/a/58398958/143475

JMeter cannot assert Http response Code 423

I'm trying to assert http response codes in JMeter.
I think this is really simple, but I encountered a problem I cannot fix.
My server can return 2 response codes: 200 and 423.
There is no problem with 200, it just works, but I cannot assert 423, I don't know why.
I tried response assertion with the following configurations:
Field to test: Response Code,
Pattern Matching Rules: Contains
Patterns to test:
200 - works
423 - does not work
200|423 - 200 works, 423 does not work (wtf?)
I also tried BeanShell Assertion with
Failure = !(ResponseCode.contains("200") || ResponseCode.contains("423"));
It does not work, too.
Also I tried to match with the response message to contain "Locked" - does not work.
The server Response looks like this:
Thread Name: 10 Users, 100 Repeats 1-10
Sample Start: 2017-05-19 13:06:09 MESZ
Load time: 33
Connect Time: 2
Latency: 33
Size in bytes: 333
Sent bytes:768
Headers size in bytes: 333
Body size in bytes: 0
Sample Count: 1
Error Count: 1
Data type ("text"|"bin"|""):
Response code: 423
Response message: Locked
Response headers:
HTTP/1.1 423 Locked
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
X-Application-Context: application:capacitytest
Content-Length: 0
Date: Fri, 19 May 2017 11:06:08 GMT
Server: Not_available
HTTPSampleResult fields:
ContentType:
DataEncoding: null
The response code is marked blue for a reason in Sampler Result. Don't know why.
I'm also logging the response code via Beanshell PostProcessor. It is 423...
Finally I'm asking here for your help.
I have no idea what the problem is or could be.
Thanks in advance.
If you are talking about HTTP Request sampler JMeter automatically threats HTTP Status Codes above 400 (inclusively) as failed. I would recommend the following setup:
Add Response Assertion as a child of your HTTP Request
Configure it as follows:
Apply to: according to your test scenario
Fields to test:
Response Code
Don't forget to check Ignore Status box
Pattern Matching Rules: Matches
Patterns to Test: 200|423
Assuming above configuration if the status of your request will be 200 OR 423 - it will pass, otherwise it will get failed by the assertion.
See How to Use JMeter Assertions in Three Easy Steps guide for comprehensive information regarding JMeter Assertions.

PHRETS:GetMetadataTypes() called but unable to find GetMetadata location

I'm building a RETS based application and every time I try to run the script it shows "GetMetadataTypes() called but unable to find GetMetadata location. Failed login?". I'm not sure what exactly is causing this issue. Below is my code snippet for your review:
if ($connect)
{
echo " + Connected<br>\n";
$types = $rets->GetMetadataTypes();
// check for errors
if (!$types)
{
print_r($rets->Error());
}
else
{
var_dump($types);
}
}
Below is the debug log for your review.
* About to connect() to ctarmls2.apps.retsiq.com port 80 (#0)
* Trying 107.22.214.38...
* connected
* Connected to ctarmls2.apps.retsiq.com (107.22.214.38) port 80 (#0)
GET /acc/rets/login HTTP/1.1
Host: ctarmls2.apps.retsiq.com
Accept: /
RETS-Version: RETS/1.5
User-Agent: PHRETS/1.0
Accept: /
< HTTP/1.1 401 Unauthorized
< Cache-Control: private
< Cache-Control: private
< Content-Type: text/html;charset=utf-8
< Date: Thu, 18 Dec 2014 09:00:26 GMT
< MIME-Version: 1.0
< RETS-Version: RETS/1.5
< Server: nginx/1.0.11
Added cookie JSESSIONID="94616DF90574A5747A5CC58526968DC4" for domain ctarmls2.apps.retsiq.com, path /acc, expire 0
< Set-Cookie: JSESSIONID=94616DF90574A5747A5CC58526968DC4; Path=/acc
Replaced cookie JSESSIONID="94616DF90574A5747A5CC58526968DC4" for domain ctarmls2.apps.retsiq.com, path /acc, expire 0
< Set-Cookie: JSESSIONID=94616DF90574A5747A5CC58526968DC4; Path=/acc
< WWW-Authenticate: Digest realm="rets#flexmls.com", qop="auth", nonce="055a98f2718db640bb49b25727b265c7", opaque="e740e530f881b719ac847f225d70ef26"
< Content-Length: 954
< Connection: keep-alive
<
Ignoring the response-body
Connection #0 to host ctarmls2.apps.retsiq.com left intact
Issue another request to this URL: 'http://ctarmls2.apps.retsiq.com:80/acc/rets/login'
Re-using existing connection! (#0) with host (nil)
Connected to (nil) (107.22.214.38) port 80 (#0)
Server auth using Digest with user 'chs.rets.asolz1-i33'
GET /acc/rets/login HTTP/1.1
Authorization: Digest username="chs.rets.asolz1-i33", realm="rets#flexmls.com", nonce="055a98f2718db640bb49b25727b265c7", uri="/acc/rets/login", cnonce="MTUzODg1", nc=00000001, qop="auth", response="a28c686f4af4100dc6f417c013c44233", opaque="e740e530f881b719ac847f225d70ef26"
Host: ctarmls2.apps.retsiq.com
Accept: /
Cookie: JSESSIONID=94616DF90574A5747A5CC58526968DC4
RETS-Version: RETS/1.5
User-Agent: PHRETS/1.0
Accept: /
< HTTP/1.1 200 OK
< Cache-Control: private
< Cache-Control: private
< Content-Type: text/xml
< Date: Thu, 18 Dec 2014 09:00:26 GMT
< MIME-Version: 1.0
< RETS-Version: RETS/1.5
< Server: nginx/1.0.11
Replaced cookie JSESSIONID="94616DF90574A5747A5CC58526968DC4" for domain ctarmls2.apps.retsiq.com, path /acc, expire 0
< Set-Cookie: JSESSIONID=94616DF90574A5747A5CC58526968DC4; Path=/acc
< WWW-Authenticate: Digest realm="rets#retsiq.com",qop="auth",nonce="1647953c3586fee2f03a44259066e02d", opaque="31b02b3042ea6"
< Content-Length: 283
< Connection: keep-alive
<
Connection #0 to host (nil) left intact
MemberName=chs.rets.asolz1-i33
User=chs.rets.asolz1-i33,1,MEMBER,20141216152304900080000000
Broker=RETS_OFFIC
MetadataVersion=01.01.71275
MinMetadataVersion=01.01.71275
Logout=/acc/rets/logout
Closing connection #0
Thanks
It is the rets server issue. The server has to specify a metadata url location which is displaying in the xml response when logging via a browser which is missing for this server. Tell this concern to rets server maintenance team.

Jmeter- soap-xml sampler request

I am using jmeter, I am very new to it and have min programming background.
I am currently using 2 sampler: a) soap Request b) soap xml rpc request.
Uisng the soap request sampler, I can easily load the wsdl file and continue my testing.
RESPONSE
But unable to do so with 'soap xml rpc request' sampler
the message I am getting here is
a:ActionNotSupportedThe message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).
SAMPLER RESULT
Thread Name: Thread Group 1-1
Sample Start: 2013-09-27 15:03:07 BST
Load time: 7
Latency: 7
Size in bytes: 698
Headers size in bytes: 0
Body size in bytes: 698
Sample Count: 1
Error Count: 1
Response code: 500
Response message: Internal Server Error
Response headers:
HTTP/1.1 500 Internal Server Error
Content-Length: 698
Content-Type: text/xml; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
Date: Fri, 27 Sep 2013 14:03:07 GMT
Connection: close
HTTPSampleResult fields:
ContentType: text/xml; charset=utf-8
DataEncoding: utf-8
It could be simple - just uncheck the 'Send SOAP Action" checkbox in SOAP/XML-RPC request and try again

Why I'm getting a 500 server response in Google Webmaster Tools?

I'm trying to figure out why my web isn't getting crawled by the Google Spider, and when I do a test about the response of the site I see that I'm getting a 500 server response BUT my website is actually working.
My site is http://lacasadelilihostal.com/ and was made in Laravel.
I see another question when said that the problem could be by a JavaScript error but I don't see anyone in my web; and also I changed the permissions of the public folder to 775 but didn't work either.
This is the exact header response of your homepage. I'm taking a little time to digest this information and will come back. In the meantime others can consider this info too:
HTTP/1.1 200 OK
Date: Thu, 15 Aug 2013 17:35:33 GMT
Server: Apache
X-Powered-By: PHP/5.3.26
Cache-Control: no-cache
Set-Cookie: laravel_session=76c6f66056ff1828be5ad677b87f9690; expires=Thu, 15-Aug-2013 19:35:33 GMT; path=/; HttpOnly
Set-Cookie: laravel_session=76c6f66056ff1828be5ad677b87f9690; expires=Thu, 15-Aug-2013 19:35:34 GMT; path=/; httponly
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
I check my logs and found that i'm getting the error "'Uninitialized string offset: " in this line:
`$langcode = (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : '';
$langcode = (!empty($langcode)) ? explode(";", $langcode) : $langcode;
$langcode = (!empty($langcode['0'])) ? explode(",", $langcode['0']) : $langcode;
$langcode = (!empty($langcode['0'])) ? explode("-", $langcode['0']) : $langcode;
$langcode = strtolower($langcode[0]);` `
This only happened with crawlers... I remove the last line.

Resources