質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

10649閲覧

C#でトークンを取得してセットしたい。

cancat

総合スコア313

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2016/12/03 10:16

こんにちは。
Windows10でWPFのアプリケーションを開発しています。
Visual Studio 2015 Communityを使っています。

###前提・実現したいこと
Todo.lyのタスクを管理したいです。
トークンを取得してセットして処理をするのだと思いますが、
取得とセット方法がわからずにいます。

###試したこと
Browser(Edge)でhttps://todo.ly/api/authentication/token.jsonにアクセスし、トークンを表示できました。

###発生している問題・エラーメッセージ
コードからはresponseがnullです。

###該当のソースコード

C#

1using Newtonsoft.Json; 2using System; 3using System.Collections.Generic; 4using System.Linq; 5using System.Net.Http; 6using System.Text; 7using System.Threading.Tasks; 8using System.Windows; 9 10namespace Todoly { 11 class Todoly { 12 public async void Get() { 13 var encode = Encoding.GetEncoding("UTF-8"); 14 var tokenuri = "https://todo.ly/api/authentication/token.json"; 15 Token token; 16 using (var client = new HttpClient()) { 17 // ユーザーエージェント文字列をセット 18 client.DefaultRequestHeaders.Add("User-Agent", "Shin-Mozilla/5.5 (Windows NeXT 5.5; Trident/7.0; rv:11.0) like GeckohKamen"); 19 // 受け入れ言語をセット 20 client.DefaultRequestHeaders.Add("Accept-Language", "ja-JP"); 21 22 HttpResponseMessage response; 23 response = await client.GetAsync(tokenuri); 24 string result = await response.Content.ReadAsStringAsync();//<-ここでresultはnull 25 token = JsonConvert.DeserializeObject<Token>(result); 26 } 27 28 List<TodolyObject> tasks = new List<TodolyObject>(); 29 var uri = "https://todo.ly/api/items.json"; 30 31 using (var client = new HttpClient()) { 32 // ユーザーエージェント文字列をセット 33 client.DefaultRequestHeaders.Add("User-Agent", "Shin-Mozilla/5.5 (Windows NeXT 5.5; Trident/7.0; rv:11.0) like GeckohKamen"); 34 // 受け入れ言語をセット 35 client.DefaultRequestHeaders.Add("Accept-Language", "ja-JP"); 36 37 HttpResponseMessage response; 38 response = await client.GetAsync(uri); 39 string result = await response.Content.ReadAsStringAsync(); 40 41 tasks = JsonConvert.DeserializeObject<List<TodolyObject>>(result); 42 MessageBox.Show("now"); 43 } 44 } 45 } 46 47 public class TodolyObject { 48 public long? Id; 49 public string Email; 50 public string Password; 51 public string FullName; 52 public double? TimeZone; 53 public bool? IsProUser; 54 public long? DefaultProjectId; 55 public bool? AddItemMoreExpanded; 56 public bool? EditDueDateMoreExpanded; 57 public int? ListSortType; 58 public int? FirstDayOfWeek; 59 public int? NewTaskDueDate; 60 } 61 62 public class Token { 63 public string TokenString; 64 public string UserEmail; 65 public long ExpirationTime; 66 } 67} 68

###補足情報(言語/FW/ツール等のバージョンなど)
Microsoft Visual Studio Community 2015
Version 14.0.25424.00 Update 3
Microsoft .NET Framework
Version 4.6.01038

インストールしているバージョン:Community

Visual C# 2015 00322-20000-00000-AA575
Microsoft Visual C# 2015

です。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

トークンを取得したあと、https://todo.ly/api/items.jsonにアクセスする際、トークンをheaderにセットしていないためでしょうかね。

todo.lyのapiをみたところBasic認証のようなので(ここしか見てないですが)、headerにBasic認証のスタイルでキーをセットしてあげれば使えると思います。

あと、実用的にいくなら、毎回トークンを取得せず有効期限が切れたらトークン取得するみたいなコードにするとイイ感じでしょうかね♪。

投稿2016/12/05 05:20

BEACHSIDE

総合スコア294

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

cancat

2016/12/05 13:46 編集

ありがとうございます。
cancat

2016/12/05 13:46 編集

できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問