2016-10-12 11 views
0

サーマルアンサーに接続しようとすると、.NET HttpClientをxamarinフォームで使用しています。私はHttpClient、Xamarin、REST、サーベイサルを初めて使うので、どこでもどこでもミスを犯す可能性があります。Survey Monkeyがリクエストヘッダーエラーで無効な権限を与えています

私はcurlでサーベイサルの例を使用していくつかの成功を収めました。私はそれをHttpClientでC#コードに変換しようとしています。

が、私は私のコードで

HttpClient httpClient = new HttpClient(); 
Uri  uri  = new Uri("https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=humkanu389g5dp9tvsdrh8fv"); 
HttpContent content = new StringContent(String.Empty,Encoding.UTF8,"application/json"); 

httpClient.DefaultRequestHeaders.Accept.Clear(); 
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization","Bearer XXXXXXXXX"); 
httpClient.Timeout = TimeSpan.FromSeconds(10); 

HttpResponseMessage response = Task.Run(() => httpClient.PostAsync(uri,content)).Result; 

String responseContent = Task.Run(() => response.Content.ReadAsStringAsync()).Result; 

のようないくつかの「テストコード」を持って、私は私の許可トークンでXXXXXXX年代に取って代わりました。

しかし、私は間違ってAuthenticationHeaderValue()の部分を処理していた場合、私は疑問に思って

{"status":1,"errmsg":"Invalid \"Authorization\" data in request header"} 

のような応答を取得しています。または、他の何か?

答えて

1

ヘッダーの形式が正しくない場合は、値として「承認ベアラXXXXX」があります。したがって、次のようになります。

Authorization: Authorization bearer XXXXX 

あなたのコードに基づいている理由はわかりませんが、送信している値をデバッグして確認する必要があります。しかし、それは次のようになります。

Authorization: bearer XXXXX 

私の仮定がAuthenticationHeaderValueであるあなたが期待していない何かをやっています。ドキュメントを検索すると、正しいことをしているように見えるので、送信しているヘッダーが正しくないというC#コードの何が問題なのか正確にはわかりません。

+0

>>送信する値をデバッグして表示する必要があります。 – user2735420

+0

>>送信する値をデバッグして表示する必要があります。 – user2735420

+0

私はコメントに改行を入れることはできません。私が試したときのそのコメントの投稿。私が何を言おうとしていたのは「どのように」ですか?私は私が送るものを "見る"方法を知らない。私は前にRESTやhttpをやっていません。ありがとうございます – user2735420

0

一般的なKandalaftは本当に問題を指摘していました。振り返ってみると明らかでしたが、他の誰かがこれを試している場合に備えてここに最終コードを掲載したいと思います。

上記で指摘したようにAuthenticationHeaderValueを修正しました。私の要求の内容が空の文字列だったので、私は問題に遭遇しました。私はある例からいくつかのjsonのテキストを入れて、それは働いた。最終コード

HttpClient httpClient = new HttpClient(); 
Uri  uri  = new Uri("https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=humkanu389g5dp9tvsdrh8fv"); 
HttpContent content = new StringContent ("{ \"fields\": [ \"title\", \"date_modified\" ] }",Encoding.UTF8,"application/json"); 
httpClient.DefaultRequestHeaders.Accept.Clear(); 
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer","XXXXXX"); 
httpClient.Timeout = TimeSpan.FromSeconds(10); 

HttpResponseMessage response = Task.Run(() => httpClient.PostAsync(uri,content)).Result; 

String responseContent = Task.Run(() => response.Content.ReadAsStringAsync()).Result; 
関連する問題