RestSharp на Windows Phone с параметрами запроса - PullRequest
1 голос
/ 13 марта 2012

Я работаю на клиенте Windows Phone для одного сервиса с Oauth1 API.

В документах API у меня есть что-то вроде этого:

url: http://example.com/iphone/json/users/

method: GET

параметры: page_num = [int] - номер страницы,> = 1, по умолчанию = 1.

Для номера страницы по умолчанию все работает хорошо:

        RestClient HabraClient = new RestClient("http://habrahabr.ru");
        HabraClient.Authenticator = OAuth1Authenticator.ForProtectedResource("xxx", "yyyyyy", App.Tokens.Key, App.Tokens.Secret);
        var TokenRequest = new RestRequest("/iphone/json/users/", Method.GET);

        HabraClient.ExecuteAsync(TokenRequest, (response =>
        {
            try
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {

Когда я выполняю этот запрос, я получаю правильный ответ с данными.Но если я добавлю параметр (раскомментируйте TokenRequest.AddParameter ("page_num", 2);), я получу "Недопустимая подпись".Я попытался отправить как int, так и строковый параметр.

        var TokenRequest = new RestRequest("/iphone/json/users/", Method.GET);

        TokenRequest.AddParameter("page_num", 2);

        HabraClient.ExecuteAsync(TokenRequest, (response =>
        {
            try
            {
                if (response.StatusCode == HttpStatusCode.OK)
                {

Я получаю сообщение «Неверная подпись».Я также пробовал строковый параметр:

        TokenRequest.AddParameter("page_num", "2");

Провайдер API сказал мне, что у меня проблема с базовой строкой подписи http://oauth.net/core/1.0/#sig_base_example Итак, как мне ее просмотреть?Или, может быть, вы можете помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 29 марта 2012

Я думаю, что вы нарушаете структуру запроса ... лучше проверить запрос через Fiddler, но попробуйте написать что-то вроде

var TokenRequest = new RestRequest("/iphone/json/users/?page_num=2", Method.GET);

вместо

var TokenRequest = new RestRequest("/iphone/json/users/", Method.GET);

TokenRequest.AddParameter("page_num", 2);

Надеюсь, это поможет.

...