リクエストパラメータを使用した Windows Phone 上の RestSharp
-
13-12-2019 - |
質問
私は、Oauth1 API を使用した 1 つのサービスの Windows Phone クライアントに取り組んでいます。
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 パラメータと 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)
{
「無効な署名」というメッセージが表示されます。文字列パラメータも試してみました:
TokenRequest.AddParameter("page_num", "2");
APIプロバイダーは私に言った、私は署名ベース文字列に問題があると言った http://oauth.net/core/1.0/#sig_base_example それで、どうすれば見ることができますか?それとも、このすべての問題を解決するのを手伝ってくれるかもしれません。
解決
リクエスト構造を壊していると思います...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);
役に立てば幸いです。
所属していません StackOverflow