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读取响应