2012-03-13 2 views
1

Я работаю над клиентским телефоном Windows для одной службы с API Oauth1.RestSharp на телефоне Windows с параметрами запроса

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

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

method: GET

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

По умолчанию страница NUM все работает хорошо:

 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) 
       { 

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

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

     TokenRequest.AddParameter("page_num", 2); 

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

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

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

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

+1

Вы можете опубликовать более полные примеры рабочей версии _and_ нерабочей версии? –

+0

Как вы создаете подпись? –

+0

Джон, я обновил сообщение. Мэтт, подпись генерируется API, и я пытаюсь найти способ, как увидеть его в отладчике :) – Ponf

ответ

0

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

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); 

Надежда, это поможет ,

+0

Спасибо большое! Оно работает! – Ponf

Смежные вопросы