The problem is not the encoding of messages between the worker and the method but in the method's configuration handler AcqMethod::Configuration
This method takes the message string, unquote all the items (hence the URI), and set the associated configuration item.
The De/QuoteString method is not bijective if the string already contains one of the unquoted character.
e.g http://user2:p%40ssword@localhost:3128 is unquoted to http://user2:p@ssword@localhost:3128
the resulting string is an invalid URI and cannot be parsed and the quoting cannot be reversed because http://user2:p@ssword@localhost:3128 will give http://user2:p%40ssword%40localhost:3128
I made a quick fix to the parser for the '@' but if the password contains an '/' it becomes quite tricky and it's more of a hack than a fix. Furthermore the problem is not the uri parser here.
We cannot escape the URI in HttpMethod::Configuration for the reason above.
At first sight, a solution could be to add an exclusion list of items that should not be dequoted in the configuration handler and processed specifically in each method.
The problem is not the encoding of messages between the worker and the method but in the method's configuration handler AcqMethod: :Configuration
This method takes the message string, unquote all the items (hence the URI), and set the associated configuration item. user2:p% 40ssword@ localhost: 3128 is unquoted to http:// user2:p@ ssword@localhost:3128 user2:p@ ssword@localhost:3128 will give http:// user2:p%40ssword% 40localhost: 3128
The De/QuoteString method is not bijective if the string already contains one of the unquoted character.
e.g
http://
the resulting string is an invalid URI and cannot be parsed and the quoting cannot be reversed because
http://
I made a quick fix to the parser for the '@' but if the password contains an '/' it becomes quite tricky and it's more of a hack than a fix. Furthermore the problem is not the uri parser here.
We cannot escape the URI in HttpMethod: :Configuration for the reason above.
At first sight, a solution could be to add an exclusion list of items that should not be dequoted in the configuration handler and processed specifically in each method.
I'll try to post a prototype.