C# windows phone 8中的异步HttpRequest

C# windows phone 8中的异步HttpRequest,c#,windows-phone-8,async-await,C#,Windows Phone 8,Async Await,我使用下面的代码生成一个HttpWebrequest并从服务器读取响应 private async Task<bool> ReadUrlAsync() { var request = HttpWebRequest.Create(request_url) as HttpWebRequest; request.Accept = "application/json;odata=verbose"; var facto

我使用下面的代码生成一个
HttpWebrequest
并从服务器读取响应

private async Task<bool> ReadUrlAsync()    
{      
    var request = HttpWebRequest.Create(request_url) as HttpWebRequest;                
    request.Accept = "application/json;odata=verbose";
    var factory = new TaskFactory();
    var task = factory.FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, null);

    var response = await task;
    Stream responseStream = response.GetResponseStream();
    string data;
    using (var reader = new System.IO.StreamReader(responseStream))
    {
        data = reader.ReadToEnd();
    }
    responseStream.Close();
    return true;
}
方法内部有一个
TaskFactory
实例。
那么,在函数中没有
Taskfactory
或单独的
wait
的情况下编写此代码有什么方法可以帮助您吗

private void ReadUrlAsync()
    {
    var request = HttpWebRequest.Create(request_url) as HttpWebRequest;                
        request.Accept = "application/json;odata=verbose";
        request.BeginGetResponse(ResponseCallback, request);
    }

private void ResponseCallback(IAsyncResult asyncResult)
  {
     HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
     using (Stream responseStream= response.GetResponseStream())
       {
         string data;
         using (var reader = new System.IO.StreamReader(responseStream))
          {
            data = reader.ReadToEnd();
          }
       }
  }

愿这对你有帮助

private void ReadUrlAsync()
    {
    var request = HttpWebRequest.Create(request_url) as HttpWebRequest;                
        request.Accept = "application/json;odata=verbose";
        request.BeginGetResponse(ResponseCallback, request);
    }

private void ResponseCallback(IAsyncResult asyncResult)
  {
     HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
     using (Stream responseStream= response.GetResponseStream())
       {
         string data;
         using (var reader = new System.IO.StreamReader(responseStream))
          {
            data = reader.ReadToEnd();
          }
       }
  }

愿这对你有帮助

private void ReadUrlAsync()
    {
    var request = HttpWebRequest.Create(request_url) as HttpWebRequest;                
        request.Accept = "application/json;odata=verbose";
        request.BeginGetResponse(ResponseCallback, request);
    }

private void ResponseCallback(IAsyncResult asyncResult)
  {
     HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
     using (Stream responseStream= response.GetResponseStream())
       {
         string data;
         using (var reader = new System.IO.StreamReader(responseStream))
          {
            data = reader.ReadToEnd();
          }
       }
  }

愿这对你有帮助

private void ReadUrlAsync()
    {
    var request = HttpWebRequest.Create(request_url) as HttpWebRequest;                
        request.Accept = "application/json;odata=verbose";
        request.BeginGetResponse(ResponseCallback, request);
    }

private void ResponseCallback(IAsyncResult asyncResult)
  {
     HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
     HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
     using (Stream responseStream= response.GetResponseStream())
       {
         string data;
         using (var reader = new System.IO.StreamReader(responseStream))
          {
            data = reader.ReadToEnd();
          }
       }
  }

等待来自Async的
任务可以。我通常创建一个扩展方法,以便
fromsync
在它自己的方法中,但它的作用与您在这里所做的几乎完全相同(即使用
Task.Factory.fromsync
而不是
new TaskFactory().fromsync

请注意,更现代的方法是使用,这大大简化了代码:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    using (var response = await client.GetAsync(request_url))
    {
      var data = await response.Content.ReadAsStringAsync();
      return true;
    }
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); 使用(var-response=await-client.GetAsync(请求url)) { var data=await response.Content.ReadAsStringAsync(); 返回true; } } }
我假设您希望显式响应,例如,检查响应头。如果不需要,可以进一步简化:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    var data = await client.GetStringAsync(request_url);
    return true;
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); var data=await client.GetStringAsync(请求url); 返回true; } }
等待来自Async的
任务可以。我通常创建一个扩展方法,以便
fromsync
在它自己的方法中,但它的作用与您在这里所做的几乎完全相同(即使用
Task.Factory.fromsync
而不是
new TaskFactory().fromsync

请注意,更现代的方法是使用,这大大简化了代码:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    using (var response = await client.GetAsync(request_url))
    {
      var data = await response.Content.ReadAsStringAsync();
      return true;
    }
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); 使用(var-response=await-client.GetAsync(请求url)) { var data=await response.Content.ReadAsStringAsync(); 返回true; } } }
我假设您希望显式响应,例如,检查响应头。如果不需要,可以进一步简化:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    var data = await client.GetStringAsync(request_url);
    return true;
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); var data=await client.GetStringAsync(请求url); 返回true; } }
等待来自Async的
任务可以。我通常创建一个扩展方法,以便
fromsync
在它自己的方法中,但它的作用与您在这里所做的几乎完全相同(即使用
Task.Factory.fromsync
而不是
new TaskFactory().fromsync

请注意,更现代的方法是使用,这大大简化了代码:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    using (var response = await client.GetAsync(request_url))
    {
      var data = await response.Content.ReadAsStringAsync();
      return true;
    }
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); 使用(var-response=await-client.GetAsync(请求url)) { var data=await response.Content.ReadAsStringAsync(); 返回true; } } }
我假设您希望显式响应,例如,检查响应头。如果不需要,可以进一步简化:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    var data = await client.GetStringAsync(request_url);
    return true;
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); var data=await client.GetStringAsync(请求url); 返回true; } }
等待来自Async的
任务可以。我通常创建一个扩展方法,以便
fromsync
在它自己的方法中,但它的作用与您在这里所做的几乎完全相同(即使用
Task.Factory.fromsync
而不是
new TaskFactory().fromsync

请注意,更现代的方法是使用,这大大简化了代码:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    using (var response = await client.GetAsync(request_url))
    {
      var data = await response.Content.ReadAsStringAsync();
      return true;
    }
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); 使用(var-response=await-client.GetAsync(请求url)) { var data=await response.Content.ReadAsStringAsync(); 返回true; } } }
我假设您希望显式响应,例如,检查响应头。如果不需要,可以进一步简化:

async Task<bool> ReadUrlAsync()
{
  using (var client = new HttpClient())
  {
    client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
    var data = await client.GetStringAsync(request_url);
    return true;
  }
}
异步任务ReadUrlAsync() { 使用(var client=new HttpClient()) { Add(“Accept”,“application/json;odata=verbose”); var data=await client.GetStringAsync(请求url); 返回true; } }
是否有任何请求。ReadAsync()类型的扩展可用。?在从文件读取时,我们使用.ReadToEndAsync();那么,是否存在类似的方法?对url发出GET请求并从url读取响应是否存在任何请求。ReadAsync()类型的扩展可用。?在从文件读取时,我们使用.ReadToEndAsync();那么,是否存在类似的方法?对url发出GET请求并从url读取响应是否存在任何请求。ReadAsync()类型的扩展可用。?在从文件读取时,我们使用.ReadToEndAsync();那么,是否存在类似的方法?对url发出GET请求并从url读取响应是否存在任何请求。ReadAsync()类型的扩展可用。?在从文件读取时,我们使用.ReadToEndAsync();那么有没有类似的方法?对url发出GET请求并从url读取响应