TOP 
記事検索(複数ワードSP区切り)
ティアのホームページ☆ミ

 
ティアのホームページ 月依桜へようこそ☆ミ
フルhttps化したので、リンクを張り直してくれると嬉しいです☆

(2024年8月8日更新) ATOM 1.0
女装千年王国 2017年9月29日発売
チャンネル 茉奈香ちゃんねる
 
カテゴリ 自己の紹介 りんく 落書き帳 レガリヤ プログラム みちゃいやん グラフィック RTChart個人用
 
テーマ 日記(825)
たわごと(260)
BlogPet(168)
PSO2(117)
ゲーム(55)
こみけ(45)
PSO2 NGS(35)
番組表(35)
なし(32)
うさこ日記(27)
ココロ日記(20)
Windows10(11)
CG(7)
たるたる(6)
記念日(5)
アニメ(4)
Ys?(4)
あに(2)
拍手返事(2)
激痛(1)
 
旧カテゴリ たわごと
(引っ越し中)
 
カレンダー
<< 2014年11月 >>
Sun Mon Tue Wed Thu Fri Sat
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            
2014年9月 2014年4月
2014年8月 2014年3月
2014年7月 2014年2月
2014年6月 2014年1月
2014年5月 2013年12月
     
 
フォローする?

女装千年王国 2017年9月29日発売
【プリズム◇リコレクション!】情報ページ公開中!
【プリズム◇リコレクション!】情報ページ公開中!
『大図書館の羊飼い』は2013年1月25日発売予定です。
『大図書館の羊飼い』は2013年1月25日発売予定です。

『えれくと!』を応援しています!
「キミとボクとエデンの林檎」花鏡院琴音を応援中☆ 公式サイトへ
ALcot ハニカム 『アネイロ』 瑛菜応援中!
【カミカゼ☆エクスプローラー!】風花を応援中!
【カミカゼ☆エクスプローラー!】沙織を応援中!
アネカノ 秘密の彼女はお姉ちゃんいちゃらぶADV 応援中!
ゴスデリ 7月23日発売予定
『とっぱら ~ざしきわらしのはなし~』2008年9月26日発売予定!
 
no prev page 1/1ページ(1件) no next page
To Close..中級編 その2 2014年11月10日15時45分
先日のアップから間が空きましたが・・・仕事の方が忙しくて結構時間掛かったんですよ?


で先日はOneDriveのルートディレクトリを取得するところまで書きましたが・・・

では、そのデータの解体から始めましょう。

受信するのは先述の通りテキスト形式のJSONと言うものです。

で、これが・・・まぁ、色々と面倒なんですよ?
専用の形式であるため、自分で解読するしか無い様な雰囲気です。
まぁ、複雑な書式では無いので、1行ずつ読んでも良いですが、面倒なことこの上ありません。

そこで、.netの3.5とか4あたりからはこれのデコーダーが付録されています。

JsonReaderWriterFactory

と言うものですね。

しかも、これがやっかい、XML形式で返答するという物。

そこであたしのお勧めはこちら、

System.Net.WebClient wc = new System.Net.WebClient(); //WebClient作成
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument(); //出力用のXMLドキュメント

Byte[] dat = wc.DownloadData(URL); //バイナリ形式で戻り値を取得
System.Xml.XmlDictionaryReader xdr = System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader(dat, System.Xml.XmlDictionaryReaderQuotas.Max); //リーダーに掛ける

xdr.Read();//ルートオブジェクトの読み込み
xDoc.LoadXml(xdr.ReadOuterXml());//変換済みのXMLソースをXmlドキュメントに流し込む

あとはxDocを一般的なxmlとして処理すれば、問題なくOK


所で、これで取得するのは、ルートディレクトリの情報です。

これを取得しただけでは何も出来ません。

操作したい対象のフィルだを開いて、ファイルをダウンロードする、アップロードする、 そう言った事をしないといけません。


じゃぁ、目的のフォルダを取得するにはどうしたら良いでしょうか?
じゃぁ、
https://apis.live.net/v5.0/me/skydrive?
とやったところを
https://apis.live.net/v5.0/me/skydrive/フォルダ1/フォルダ2?

と殺れば出てくるでしょうか??

答えはノーです。

実際のフォルダは全て数字名になっているので、この方法では取得出来ません。

そこで利用するのが「upload_location」タグです。

これは、下位層の情報が含まれている場所へのリンクが格納されています。
(注:これ以降の情報はJSON形式がXML形式になったものです。)

<upload_location type="string">https://apis.live.net/v5.0/folder.xxxxxxxxxxxxxxxxxxx/files/</upload_location>
これをダウンロードすることで、フォルダの中身一覧が取得出来、その中から希望するフォルダの情報を取得することになります。

ちなみに、
upload_location以外の情報源として、<id type="string">folder.xxxxxxx</id>があります。

https://apis.live.net/v5.0/に idタグの中身を貼り付けることでフォルダその物にアクセス出来ます。
さらにその後ろに/files/を付けることで、フォルダの中のファイルの一覧を取得出来ます。

なお、ファイルの一覧と言っていますが、ファイルやらフォルダがすべて混ざって値が返ってくるので、
<type type="string">folder</type>または<type type="string">album</type>で、<name type="string">フォルダ名</name>が探しているフォルダ名かどうかを確認することで、確定出来ます。


また、ファイルの場合は
<id type="string">file.xxxxxxxx</id>
と、idの先頭もfileになり、
upload_locationの後ろもfilesからcontentに変わり、これを取得することで、多分ダウンロードすることになります。
<upload_location type="string">https://apis.live.net/v5.0/file.xxxxxxxxxxxxxx/content/</upload_location>


ってことで、/フォルダ1/フォルダ2を取得するには、

1.ルートディレクトリの情報を取得する。
2.ルートディレクトリのファイル一覧を取得する。
3.フォルダ1の情報を探す
4.フォルダ1のファイル一覧を取得する。
5.フォルダ2の情報を探す。
6.フォルダ2のファイル一覧を取得する。
といった方法をとる必要があるようです。

ちなみに注意事項ですが・・・・
ファイル一覧に表示されているフォルダの情報は当該フォルダのファイル一覧へのリンクしか保持していません。

フォルダその物の情報が必要な場合は、upload_locationを使う場合は、/files/を消してからデータの取得をするか、
idを用いるか、どちらかと言うことに成ります。

なぜフォルダの情報が必要なのでしょうか?
ある程度の情報なら、わざわざ取得しなくても分かるのでは無いかと言うことですが・・・・

じつはこれ、それなりに重要なのです。

フォルダの新規作成は、フォルダに対して行うので/files/や/content/が付いている状態で行っても、成功しません。
それと、
新規作成したフォルダは、当然中身がありません。

中身の一覧を返す/files/では中身が無い状態では、ほぼ情報を返しません。

<root type=\"object\"><data type=\"array\"></data></root>

これだけですね。

なので、フォルダの情報とフォルダのリスト情報をペアで保存しておかなければ前後不覚に陥ります。
基本的には、ディレクトリ階層のフォルダのidを全部保存しておく必要があるでしょう。
他に使うのであれば、日付などの情報も、予め抜いておくと良いでしょう。

せっかくのXML形式なのでそのまま取っておけば、便利かもしれません。
でも、必要な情報だけを保持した、構造体とかにしておくのも一つの手ですね☆

ちなみに、データが一つでもあれば、

<parent_id type="string">folder.xxxxxxxx</parent_id>

で、前のフォルダ情報が分かります。

不便です。


ちなみに、フォルダの作成方法ですが・・・・

フォルダを作成するフォルダのidに対して、
https://apis.live.net/v5.0/folder.xxxxxxxxxxxxxx?access_token=xxxxxxxx

{name:"フォルダ1"}

をデータで送ります。

wc.Headers["Content-Type"] = "application/json";

にする必要があります。



閉じる
テーマ:日記 URL:https://tsukiyori.sakura.ne.jp/index.cgi?ID=1209
 
no prev page 1/1ページ(1件) no next page
このホームページでは一部、“PULLTOP” 製品の画像素材を加工・引用しています。
これらの素材を他へ転載することを禁じます。
(C)GUST CO.,LTD.
Copyright © 2009 C&C Media Co.,Ltd. All Rights Reserved.
Copyright ©  WeMade Entertainment Co.,Ltd. All Rights Reserved
Copyright ©  INTIVSOFT. All Rights Reserved.
『PHANTASY STAR ONLINE 2』公式サイト
http://pso2.jp/
■PULLTOP Official Website■ やりこみRPGアトリエシリーズ公式ページへ!
モバイル向けのページはこのQRコードを利用ください。
■PULLTOP Official Website■
 
以前のバナーはこちら パメラ七変化はこちら