私はC#のskydrive APIのクイックラッパーを使用していますが、ファイルのダウンロードに関する問題に取り組んでいます。ファイルの最初の部分についてはすべてがうまくいっていますが、ファイルの相違が始まるとすぐにすべてがnullになります。私はちょうど私がストリームを正しく読んでいないことはかなり確信しています。REST APIを使用してskydriveから完全なイメージファイルをダウンロードできません
これは私がファイルをダウンロードするために使用しているコードです:
public const string ApiVersion = "v5.0";
public const string BaseUrl = "https://apis.live.net/" + ApiVersion + "/";
public SkyDriveFile DownloadFile(SkyDriveFile file)
{
string uri = BaseUrl + file.ID + "/content";
byte[] contents = GetResponse(uri);
file.Contents = contents;
return file;
}
public byte[] GetResponse(string url)
{
checkToken();
Uri requestUri = new Uri(url + "?access_token=" + HttpUtility.UrlEncode(token.AccessToken));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri);
request.Method = WebRequestMethods.Http.Get;
WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
byte[] contents = new byte[response.ContentLength];
responseStream.Read(contents, 0, (int)response.ContentLength);
return contents;
}
は、これは私が
をダウンロードしようとしている画像ファイルであり、これは画像Iであります午前:
これらの2つのイメージは、コンテンツの長さが予想されるイメージのサイズと同じであるため、応答が完了するのを待っているとは思えませんが、私のコードは応答全体が出てくるのを待つか、それとももし私が取る必要があるアプローチであれば本当にです。
はここで、それはあなたがresponseStream.Read(contents, 0, (int)response.ContentLength);
の戻り値をチェックしないためですAssert.IsTrue(sameData);
代わりにWebクライアントを使用しましたか? http://msdn.microsoft.com/en-us/library/ez801hhe.aspx –