2

私が欲しいのは簡単です。アプリケーションを介して自分のウェブサイトからテキストファイルを読みたいのですが、C# でこれを行うことができましたが、メトロアプリではできませんでした。ここでは C# のコードです。

WebClient client = new WebClient();
Stream stream = client.OpenRead(strURL);
StreamReader reader = new StreamReader(stream);
String content = reader.ReadToEnd();
return content;

上記のコードに加えて、以下のコードも試しましたが、それでも失敗しました

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(strURL);

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
byte[] buf = new byte[1000];
StringBuilder sb = new StringBuilder();

do
{
  count = resStream.Read(buf, 0, buf.Length);
  if (count != 0)
  {
    tempString = Encoding.Unicode.GetString(buf, 0, count);
    sb.Append(tempString);
  }
}
return sb.ToString();

問題は、メトロアプリでは知られていない WebClient と GetResponse() にあると思います

4

2 に答える 2

2

http://msdn.microsoft.com/en-us/library/windows/apps/hh454046.aspxに含まれている System.Net.Http.HttpClient と HttpResponseMessage を使用できるはずです。

http://msdn.microsoft.com/en-us/library/system.net.http.httpclient.aspxに例があります。

static async void Main()
{
    try 
    {
      // Create a New HttpClient object.
      HttpClient client = new HttpClient();

      HttpResponseMessage response = await client.GetAsync("http://www.contoso.com/");
      response.EnsureSuccessStatusCode();
      string responseBody = await response.Content.ReadAsStringAsync();
      // Above three lines can be replaced with new helper method in following line 
      // string body = await client.GetStringAsync(uri);

      Console.WriteLine(responseBody);
    }  
    catch(HttpRequestException e)
    {
      Console.WriteLine("\nException Caught!"); 
      Console.WriteLine("Message :{0} ",e.Message);
    }
 }
于 2013-03-29T20:37:03.530 に答える
1
var httpClient = new HttpClient();
var text = await httpClient.GetStringAsync(uri);

もちろん、非同期メソッドにまとめられています

于 2013-03-29T20:28:47.543 に答える