加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-phone-7 – 如何在windows phone 8 app中为httpwebreque

发布时间:2020-12-13 20:38:51 所属栏目:Windows 来源:网络整理
导读:我正在开发一个Windows Phone 8应用程序,在我的应用程序中,我正在调用服务并将一些数据下载到我的应用程序中. 我正在使用httpwebrequest请求,但我无法设置超时到我的httpwebrequest对象. 这就是我创建和使用我的httpwebrequest的方式: – public async Task
我正在开发一个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,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 app中设置超时属性的不同方式有哪些?

请告诉我 .

提前致谢.

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

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

否则,您可能最好使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读