2017-06-09 11 views
0

私は私のAPIからのアクセストークンを取得した後、私はこのメソッドを呼び出しています:RestSharpを使用して、oAuth2ベアラトークンを使用してASP.NET Web APIにPOSTリクエストを実行するにはどうすればよいですか?

[Authorize] 
[HttpPost] 
public HttpResponseMessage BatchGeocode([FromBody] InputDataClass inputData) 
{ 
    //do stuff, return a HttpResponseMessage 
} 

私は要求を作成し、このようにポストマンを使用して、予想される応答を取得することができます

HTTP request using Postman

私は上記のURLと入力データを使用してRestSharpを使用するアプリケーションで同じAPIメソッドを呼び出そうとしています:

var client = new RestClient(url); 

var request = new RestRequest(Method.POST); 
request.RequestFormat = DataFormat.Json; 
request.AddHeader("Content-Type", "application/json"); 
request.AddHeader("Authorization", "Bearer " + accessToken);  
request.Parameters.Clear(); 
request.AddParameter("application/json", JsonConvert.SerializeObject(apiInput), ParameterType.RequestBody); 

ここでapiInputはAPI入力パラメータと一致するオブジェクトです - JsonConvert.SerializeObject()でシリアル化されたとき、私はPostman経由でAPIリクエストの本文に使用されているものと同じ文字列を取得します。

これが実行されると、私が戻ってくるメッセージは「この要求に対して承認が拒否されました」です。私がローカルで実行しているAPIの私のブレークポイントはヒットしていないので、呼び出し元のアプリケーションでリクエストを適切に構造化していないと思うようになります。 RestSharpを使用して、oAuth2ベアラトークンを使用してASP.NET Web APIにPOSTリクエストを実行するにはどうすればよいですか?

+1

Hmmmm - リクエストを取得し、RestSharpが実際にトークンを適切に追加していることを確認するために、「Fiddler 4」のようなツールを試してみましたか? RestSharpからの要求は全く同じではありませんように、トークンの文字列が間違っているよう –

+1

ように簡単かもしれませんはい、それが見えます。フィドラーで比較された2つのリクエスト間の[ここにはdiffがあります](http://www.diff-online.com/view/593b2b65482b0)。 RestSharpリクエストに「Authorization」ヘッダーがないように見えます。これはどうやってやるべきかわかりません。 RestSharpリクエストでAuthorizationヘッダーを使用してベアラートークンを使用する方法に関する適切な例やドキュメントを見つけることができませんでした。 –

答えて

3

大雑把な検索では、ParameterType値で過負荷を呼び出す必要があるようです。

request.AddParameter("Authorization", "Bearer " + accessToken, ParameterType.HttpHeader); 

またRestSharpはあなたが認証(source)を実行するために別の方法を使用したいと思われるが、それはRestSharpと私の知識の範囲を超えている言われていること。

+1

前の質問へのリンクをありがとう - それは私が必要としたものです。私はリクエストにパラメータとしてAuthorizationトークンを追加しました。私は今、リクエストを実行し、期待される応答を受け取ることができます。 –

関連する問題