Jmeter Illegal character found in host: '/' ISSUE - api

I tried to install Jmeter on my colleague computer when I executed http request.He has been showing this error, but I found that there is no such error in my computer. I wonder if anyone has encountered a similar problem?
My
My1
My2
Colleague
colleague1
colleague2
--
error message
java.net.MalformedURLException: Illegal character found in host: '/'
at java.base/java.net.URL.<init>(URL.java:480)
at java.base/java.net.URL.<init>(URL.java:360)
at java.base/java.net.URL.<init>(URL.java:383)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.getUrl(HTTPSamplerBase.java:1053)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1220)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.base/java.lang.Thread.run(Thread.java:830)

This problem occurs when using the http request sampler, putting '/' at the end of the Server Name or Ip textbox. It will work if you delete the '/' character at the end of the host information and add it to path.

This www.amazon.com/ref=nav_logo is not a valid hostname
Valid characters for hostnames are ASCII(7) letters
from a to z, the digits from 0 to 9, and the hyphen (-). A hostname
may not start with a hyphen.
In any case your URL query string is not correct, it should look like:
https://www.amazon.com/?ref=nav_logo
^mind this character
So correct HTTP Request sampler configuration would be:
Resulting into the following request observable via View Results Tree listener
Going forward be aware that you can build a JMeter Test Plan using HTTP(S) Test Script Recorder or JMeter Chrome Extension

Even though I cannot tell you why the test behaves differently on your machine vs that of your colleaugue (I would guess that you probably chose different client implementations in the advanced section of the HTTP Request Sampler), you should definitely consider what part of your URL is:
Protocol
Server Name or IP
Path
Parameter
and use the corresponding fields in JMeter accordingly.
Hint: "/ref=nav_logo" is most definitely NOT part of the Server Name.

I faced this issue and it was for simple reason. in the server name/ip address instead giving only the severname/ip address i.e server1 i had accidentally included the https://server1 and spend two hours to resolve it

Related

Microsoft Bot Composer Send an HTTP request does not accept variable as Url input

Versions
Bot Composer version: 4.7.0-preview-191208-1
fresh project
yarn command triggered as in docs
Latest Chrome and Edge (chromium) stable version on Windows 10 Pro
Issue
The 'Send an HTTP request' Url field no longer seems to accept a variable as input for me. For example:
${getmyurl()}
The validation seems OK:
Where the getmyurl looks something like (it's not an escaping issue, I tried multiple values here with and without quotes etc...):
# getmyurl()
- just-a-test-string-to-see-if-this-throws-an-invalid-url-exception
The response in the 'Bot Framework Emulator' always gives the message:
BuildQnaAnwserUrl does not have an evaluator, it's not a built-in function or a custom function.
This used to work for me with an older version of the Composer (where the prefix was still an #). Is anyone else having this, is my syntax incorrect somehow?
You can save the Url in a variable at start of conversation. eg. Set a property -> user.Url : urlString. In http method Url field -> Pass it as ${user.Url}. The scope of variable can be defined as per requirement (user/conversation/dialog/turn)
Send an HTTP request

Apache custom dynamic error response

I've seen hundreds of pages explaining how to create custom error pages in Apache 2 server. My question is different. I have a web application running in Apache (it is a ISAPI DLL, but it could also be a CGI executable). My application can handle internal server errors and generate a detailed error message (for instance, include a full stack trace), included in the response together with error code 500. AFAIK, Apache just let me use redirection in order to display custom error messages: http://httpd.apache.org/docs/2.2/custom-error.html
HTTP spec (RFC 2616 - section 10), not only allows but also recommend that detailed error message should be included in the BODY section of the response in case of error code > 500.
Link: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5
Seems that Apache won't let my custom error message go to the browser, and always replace it with its own internal error message and I believe that it is not the correct behavior, based on RFC 2616.
So my question is: Is there any setting in Apache server that will let my custom message go to the browser? Or, is there anything that can be done in my application that will instruct Apache to send my custom error message (something like some specific header field in the response)?
More on the subject:
When my ISAPI application returns error code 500, with other error information in the response body, Apache replaces it with its standard "500 Internal Server Error" message/HTML content, and inside Error.log file I can see the "useless" "Premature end of script headers" message. I'm deeply sure that my headers are fine, including the Content-Type field.
If I replace the 500 error code with any other server error code (e.g. 501) it works flawlessly and my response goes to the browser as is. The same header is sent to the Apache server, only the error code is different (501, instead of 500). With this test result in mind, one of these two must be true:
1- Apache requires some specific header field when status code is 500
2- Apache won't let custom error messages with status code 500 go to the browser.
I don't see any other alternative.
I think you're conflating two questions. You can generate a 500 response with a CGI script and include your custom body. Or you can override any 500 with any resource you want.
If you're failing to do the former, it's likely because of some subtle thing in the ISAPI interface between Apache and your module. Desk-checking the code says you should be able either set the pseudo
Status: 500
Header, or basically return any ISAPI error and end up with a 500 and your custom body.
Apache has two notions of a status code -- the one in the status line (r->status) and an error code returned separately from the module that handles the request (return HTTP_INTERNAL_SERVER_ERROR, return r->status).
When the former is used as the latter is when the custom error messages get lost. All of that happens in./modules/arch/win32/mod_isapi.c in Apache. Whatever is going on, it is ISAPI unique.

ORA-29273: HTTP request failed intermittent error using the utl_http package

I'm using the utl_http package to make HTTP GET requests to an IIS site on the same server (local) as Oracle. Sometimes it works and I get the response, but more often than not it hangs for about 15 seconds and then I get this error:
ORA-29273: HTTP request failed ORA-06512: at "SYS.UTL_HTTP", line 1722 ORA-29263: HTTP protocol error
As a test, I've got a small static text file in the IIS site, so this is how I'm testing it:
select utl_http.request('http://domain.com/test.txt') from dual
I get the same problem if I run it in Oracle Apex instead of direct on the db.
The other thing I've tried is to create a package of my own that does the HTTP request using the long utl_htp.begin_request() method, instead of the utl_http.request() shortcut. This gives the exact same problem (works sometimes but errors mostly - same error).
The pattern I'm seeing is if I wait a while and then try, it works for the first 2-10 times, and then begins erroring. When it does work, I get the response instantly and when it errors, there is always the delay before the error.
If I request the text file URL (or any other resource in the site) using a remote web browser then I get the correct response every time.
I have tried setting a timeout like below but it doesn't have any effect. For example instead of timing out after 3 seconds it continues for 10 or 15 seconds before the error is shown.
UTL_HTTP.set_transfer_timeout(3);
I think I can rule out ACL because it works sometimes.
Does anyone know what might cause this behaviour?
Possible reasons
-> You may have a problem with your TNS-Listener.
From the command prompt window, try to run TNSPING service_name .. try to run it quickly several times and check if it fails in some of them.
I had once a similar problem. Try to re-configure your TNS-Listener.
There must be also an option in which you can give an IP number in the TNS-listener definition. This also solves sometimes these kind of problems.
-> IIS problem.
Read about SET_PERSISTENT_CONN_SUPPORT Procedure:
https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_http.htm#i1027673
Using: utl_http.set_persistent_conn_support(true, 30);
Could you be exceeding the limit of of concurrent HTTP connections? I vaguely remembering that I run into a similar problem when I forgot to close the HTTP connection.

Jersey REST URISyntaxException

I am facing an issue at our glassfish 3.1.2 production server. I have a Jersey REST project deployed and it is throwing URISyntaxException when there is a 'space' in path parameter for any URL. For example if I hit this URL: http://MyDomain:8080/MyApp/MyVersion/MyService/MyPathParam/My%20Path%20param
Jersey throws java.lang.IllegalArgumentException with root cause java.net.URISyntaxException: Illegal character in path at index 155: http://MyDomain:8080/MyApp/MyVersion/MyService/MyPathParam/My Path param
The error does not occurs for query parameter.
This issue is not reproducible at test environment. Is there any possibility at production glassfish which decodes path parameters before Jersey gets them and jersey throws the above exception? I gone through this link which specifies that glassfish has the facility to decode the request parameters before it reaches to our application, but I didn't get the clear idea. Please help me to get rid of this issue.
It is not a good policy to use "spaces" on URLs (URIs) - see more discussion here Is a URL allowed to contain a space?. They are considered "unsafe" (http://www.ietf.org/rfc/rfc1738.txt):
The space character is unsafe because significant spaces may disappear and insignificant spaces may be introduced when URLs are transcribed or typeset or subjected to the treatment of word-processing programs.
Not sure if some "containers" allow this on the URIs (the "query parameters" may be allowed as they are encoded), but even if some allow you should seriously consider not using them. Not sure if this fits your scenario, but you could try URLEncoder.encode() as suggested in this other questions where a similar exception is raised: What I have to do to solve "java.lang.IllegalArgumentException"? (although in the same question there is a debate about using "spaces"... but maybe this is useful for you).
The Apache Load Balancer was the culprit! mod_jk was decoding the URL and it was forwarding decoded URL to one of the glassfish server. Hence jersey jax rs was throwing URISyntaxException. Issue resolved by changing the property JkOptions of mod_jk configuration from +ForwardURICompat to +ForwardURICompatUnparsed

InvocationTargetException:There was an error while invoking the operation. Flash Builder 4.6

I am having issues getting my remote server configured right after everything working properly on the local host. I am getting the following error:
InvocationTargetException:There was an error while invoking the operation. Check your operation inputs or server code and try invoking the operation again.
The key parts of the large message I am getting after that are:
Class "test" does not exist: Plugin by name 'Test' was not found in the registry; used paths::
..../smii/test/ID5D8FE3F-A1D1-4174-98B3-4BED10FD8FFEI79685B66-D792-E4E9-13B3-00004DA5951BI0F94D267-0704-3C89-0B5B-0000090BA097134950398900
I don't know how this last part of the address with random number and letters is getting there.
Also, when searching for my server settings today it seems to add a "-1" on the end of the initial directory on the server not sure why but I seem to be having major issues implementing the service remotely.