restsharp - API call with name/value in url vs querystring? -
im trying convert call forvo api (forvo.com)
hardcoded url string assigning request parameters 1 one forvorequestclass's
properties created in c# via .addparameter method
...but when request made...it turns querystring format this:
http://apifree.forvo.com/?key=[mykeygoeshere]&language=en&format=json&limit=1&order=rate-desc&sex=f&type=word&word=apple}
instead of this:
http://apifree.forvo.com/key/[mykeygoeshere]/language/en/format=json/limit/1/order/rate-desc/sex/f/type/word/word/apple
i have tried various ways call using restsharp...to no avail...any ideas...??
ok...i believe found answer. on github repo restsharp ( [1]: https://github.com/restsharp/restsharp/wiki/parametertypes-for-restrequest) found following helpful section:
urlsegment
unlike getorpost, parametertype replaces placeholder values in requesturl:
var rq = new restrequest("health/{entity}/status"); rq.addparameter("entity", "s2", parametertype.urlsegment);
when request executes, restsharp try match {placeholder} parameter of name (without {}) , replace value.
so above code results in “health/s2/status” being url.
so info, constructed url string placeholders each of parameters forvo this:
/key/{key}/format/{format}/action/{action}/language/{language}/sex/{sex}/order/{order}/limit/{limit}/type/{type}/word/{word}
my final code substitution this:
irestclient client = new restclient(soundrequest.siteurlvalue); request.addparameter(soundrequest.apikeyname, soundrequest.apikeyvalue, parametertype.urlsegment); request.addparameter(soundrequest.actionname, soundrequest.actionvalue, parametertype.urlsegment); request.addparameter(soundrequest.languagename, soundrequest.languagevalue, parametertype.urlsegment); request.addparameter(soundrequest.formatname, soundrequest.formatvalue, parametertype.urlsegment); request.addparameter(soundrequest.sexname, soundrequest.sexvalue, parametertype.urlsegment); request.addparameter(soundrequest.ordername, soundrequest.ordervalue, parametertype.urlsegment); request.addparameter(soundrequest.limitname, soundrequest.limitvalue, parametertype.urlsegment); request.addparameter(soundrequest.typename, soundrequest.typevalue, parametertype.urlsegment); request.addparameter(soundrequest.wordname, soundrequest.wordvalue, parametertype.urlsegment);
Comments
Post a Comment