wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows-phone-8 – ‘System.Net.HttpWebRequest’不包含’GetResponse’的定义大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在使用框架4.5创建一个在Visual studio 2013中使用restful GET方法的方法.这是windows_phone_8(针对Phone OS 8.0)应用程序.这是我的代码. static String httpGet(String url) { httpWebrequest req = Webrequest.Create(url)
我正在使用框架4.5创建一个在Visual studio 2013中使用restful GET方法方法.这是windows_phone_8(针对Phone OS 8.0)应用程序.这是我的代码.
static String httpGet(String url)
    {
        httpWebrequest req = Webrequest.Create(url)
                             as httpWebrequest;
        String result = null;
        using (httpWebResponse resp = req.GetResponse()
                                      as httpWebResponsE)
        {
            StreamReader reader =
                new StreamReader(resp.GetResponseStream());
            result = reader.ReadToEnd();
        }
        return result;
    }

但我得到如下构建错误

我不知道为什么会发生这种情况,相同的代码在同一环境中与Windows_application一起工作正常.

更新:我也尝试过使用Web客户端方法

WebClient client = new WebClient();

            client.Headers.Add("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

            Stream data = client.openRead("http://192.168.10.73:8087/cisms/mobilews/login/userNamecheck?userName=supervisor");
            StreamReader reader = new StreamReader(data);
            String s = reader.ReadToEnd();
            data.Close();
            reader.Close();

得到另一组错误……

更新2:

我根据@Gavin的回答更改了代码如下.

static async void httpGet(String url)
    {
        Uri uri = new Uri(url);
        String result = null;
        httpWebrequest request = (httpWebrequest)Webrequest.Create(uri);
        request.Method = "GET";
        using (var response = (httpWebResponsE)(await Task<WebResponse>.Factory.FromAsync(request.beginGetResponse,request.EndGetResponse,null)))
        {
            StreamReader reader = new StreamReader(response.GetResponseStream());
            result = reader.ReadToEnd();
        }
    }

但是控件从以下行返回到调用事件

using (var response = (httpWebResponsE)(await Task<WebResponse>.Factory.FromAsync(request.beginGetResponse,null)))

任何有关这方面的帮助将不胜感激.

答案:

我更改了代码如下,它现在正在工作..

public async Task<String> httprequest(String url)
        {
            Uri uri = new Uri(url);
            httpWebrequest request = (httpWebrequest)Webrequest.Create(uri);
            String received;

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

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

            return received;
        }

主叫部分如下……

private async void Button_Click(object sender,RoutedEventArgs E)
        {
            String uriString = "http://192.168.10.73:8087/cisms/mobilews/login/userNamecheck?userName=supervisor";
            var response = await httprequest(uriString);
        }

更新3:

在处理POST请求时还有一个问题.我试过的代码如下.

static String httpPost(String url,String[] paramname,String[] paramVal)
        {
            httpWebrequest req = Webrequest.Create(new Uri(url))
                                 as httpWebrequest;
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";

            // Build a String with all the params,properly encoded.
            // We assume that the arrays paramname and paramVal are
            // of equal length:
            StringBuilder paramz = new StringBuilder();
            for (int i = 0; i < paramname.Length; i++)
            {
                paramz.Append(paramname[i]);
                paramz.Append("=");
                paramz.Append(httpUtility.UrlEncode(paramVal[i]));
                paramz.Append("&");
            }

            // Encode the parameters as form data:
            byte[] formData =
                UTF8Encoding.UTF8.GetBytes(paramz.ToString());
            req.ContentLength = formData.Length;

            // Send the request:
            using (Stream post = req.GetrequestStream())
            {
                post.Write(formData,formData.Length);
            }

            // Pick up the response:
            String result = null;
            using (httpWebResponse resp = req.GetResponse()
                                          as httpWebResponsE)
            {
                StreamReader reader =
                    new StreamReader(resp.GetResponseStream());
                result = reader.ReadToEnd();
            }

            return result;
        }

方法在Windows Phone 8应用程序中有两个构建错误

谢谢
塞巴斯蒂安

WP8支持.NET Framework 4.5的子集.

您可以根据需要调整以下代码变体:

Webrequest request = Webrequest.Create(url);
return Task.Factory.FromAsync(request.beginGetResponse,result =>
{
    httpWebResponse response = (httpWebResponsE)request.EndGetResponse(result);
    ...
}

要么

httpWebrequest request = (httpWebrequest)Webrequest.Create(uri);
request.Method = "GET";
using (var response = (httpWebResponsE)(await Task<WebResponse>.Factory.FromAsync(request.beginGetResponse,null)))
{
    ...
}

大佬总结

以上是大佬教程为你收集整理的windows-phone-8 – ‘System.Net.HttpWebRequest’不包含’GetResponse’的定义全部内容,希望文章能够帮你解决windows-phone-8 – ‘System.Net.HttpWebRequest’不包含’GetResponse’的定义所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。