c# - RestSharp - array as querystring parameter -
i can't pass array (an int array) query string parameter restsharp client
var client = new restclient(baseurl); client.authenticator = new httpbasicauthenticator(username, password); var request = new restrequest(_endpoint, method.get); request.addheader("cache-control", "no-cache"); request.addheader("contenttype", "application/json; charset=utf-8"); request.addheader("accept", "text/html, application/xhtml+xml, image/jxr, */*"); //i tried request.addparameter("messageids", "[1,2,3]"); or request.addparameter("messageids", new int[] {1,2,3} ); or request.addqueryparameter("messageids", "[1,2,3]"); or request.addqueryparameter("messageids", new int[] {1,2,3} );
i suppose problem related urlencoding of parameters
in case pass values "new int[] {1,2,3}" (both addparameter , addqueryparameter) url built in way:
responseuri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedmessages?messageids=system.int32[]}
in case pass values string "[1,2,3]" (both addparameter , addqueryparameter) url built in way:
responseuri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedmessages?messageids=[1%2c2%2c3]}
instead working url should be:
responseuri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedmessages?messageids=%5b1,2,3%5d}
or @ least:
responseuri = {https://demo.xxxxxxxx.com:8181/ws/messages/zippedmessages?messageids=[1,2,3]}
the "addparameter" method encodes comma not [ ] , should opposite.
is there way change behaviour? exist preexecute event relpace characters? or other workaround?
Comments
Post a Comment