gpt4 book ai didi

windows-phone-7 - 如何在 Windows Phone 8 应用程序中为 httpwebrequest 设置超时?

转载 作者:行者123 更新时间:2023-12-04 23:04:43 24 4
gpt4 key购买 nike

我正在开发一个 Windows Phone 8 应用程序,在我的应用程序中,我正在调用服务并将一些数据下载到我的应用程序中。

我正在使用 httpwebrequest 进行请求,但我无法为我的 httpwebrequest 对象设置超时。

这就是我创建和使用我的 httpwebrequest 的方式:-

public async Task<string> ServiceRequest(string serviceurl, string request, string methodname)
{
string response = "";
try
{

var httpwebrequest = WebRequest.Create(new Uri(serviceurl)) as HttpWebRequest;
httpwebrequest.Method = "POST";
httpwebrequest.Headers["SOAPAction"] = "http://tempuri.org/" + iTestservice + "/" + methodname + "";
httpwebrequest.ContentType = "text/xml";


byte[] data = Encoding.UTF8.GetBytes(request);
using (var requestStream = await Task<Stream>.Factory.FromAsync(httpwebrequest.BeginGetRequestStream, httpwebrequest.EndGetRequestStream, null))
{
await requestStream.WriteAsync(data, 0, data.Length);
}

response = await httpRequest(httpwebrequest);

}
catch (Exception ex)
{

return null;
}

return response;

}

public async Task<string> httpRequest(HttpWebRequest request)
{
string received;

using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
using (var responseStream = response.GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{

received = await sr.ReadToEndAsync();
}
}
}

return received;
}

我的疑问是:-

1) 如何将超时属性设置为 Httpwebrequest ??

2)我可以在 Windows Phone 8 应用程序中设置超时属性的不同方式是什么?

请告诉我 。

提前致谢。

最佳答案

您不能使用 HttpWebRequest.Timeout在 Windows Phone 上,因为该平台不存在它。

如果您愿意使用测试版库,则可以安装 HttpClient via NuGet并使用其 Timeout属性(property)。

否则,您可能最好使用 TaskEx.Delay ,它是 Microsoft.Bcl.Async 的一部分.安装该库后,您将替换此行:

response = await httpRequest(httpwebrequest);

有了这个:
var httpTask = httpRequest(httpwebrequest);
var completeTask = await TaskEx.WhenAny(httpTask, TaskEx.Delay(5000));
if (completeTask == httpTask)
return await httpTask;
else
return null; // timeout

关于windows-phone-7 - 如何在 Windows Phone 8 应用程序中为 httpwebrequest 设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15038875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com