首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'System.Net.HttpWebRequest‘不包含'GetResponse’的定义

'System.Net.HttpWebRequest‘不包含'GetResponse’的定义
EN

Stack Overflow用户
提问于 2014-06-20 07:20:33
回答 1查看 12.4K关注 0票数 4

我正在创建一个用于在Visual 2013中使用restful方法的方法,其框架为4.5。这是windows_phone_8 (目标电话操作系统8.0)应用程序。这是我的密码。

代码语言:javascript
复制
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;
    }

但是,我得到了一个构建错误,如下所示

'System.Net.HttpWebRequest‘不包含'GetResponse’的定义,也找不到接受'System.Net.HttpWebRequest‘类型的第一个参数的扩展方法'GetResponse’(您缺少使用指令还是程序集引用?)

我不知道为什么会发生这种情况,相同的代码在相同的环境中可以很好地工作在Windows_application上。

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

代码语言:javascript
复制
 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();

又有一系列错误..。

错误1 'System.Net.WebHeaderCollection‘不包含'Add’的定义,也没有扩展方法'Add‘可以找到'System.Net.WebHeaderCollection’类型的第一个参数(您是缺少使用指令还是程序集引用?) 错误2 'System.Net.WebClient‘不包含'OpenRead’的定义,也找不到接受'System.Net.WebClient‘类型的第一个参数的扩展方法'OpenRead’(您缺少使用指令还是程序集引用?) 错误3 'System.Net.HttpWebRequest‘不包含'GetResponse’的定义,也找不到接受'System.Net.HttpWebRequest‘类型的第一个参数的扩展方法'GetResponse’(您缺少使用指令还是程序集引用?)

更新2 :

我根据@Gavin的答案修改了代码如下。

代码语言:javascript
复制
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();
        }
    }

但是控件返回到调用事件,从下面的行开始。

代码语言:javascript
复制
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))

如果能在这方面提供任何帮助,我们将不胜感激。

答案:

我修改了代码如下,它现在正在工作。

代码语言:javascript
复制
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, request.EndGetResponse, null)))
            {
                using (var responseStream = response.GetResponseStream())
                {
                    using (var sr = new StreamReader(responseStream))
                    {

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

            return received;
        }

呼叫部分如下..。

代码语言:javascript
复制
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:

我在处理职位申请时还有一个问题。下面给出了我尝试过的代码。

代码语言:javascript
复制
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, 0, 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 8应用程序中有两个构建错误

错误1 'System.Net.HttpWebRequest‘不包含'GetRequestStream’的定义,也找不到接受'System.Net.HttpWebRequest‘类型的第一个参数的扩展方法'GetRequestStream’(您缺少使用指令还是程序集引用?) 错误2 'System.Net.HttpWebRequest‘不包含'GetResponse’的定义,也找不到接受'System.Net.HttpWebRequest‘类型的第一个参数的扩展方法'GetResponse’(您缺少使用指令还是程序集引用?)

谢谢塞巴斯蒂安

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-20 07:58:55

WP8支持.NET Framework4.5的子集。

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

代码语言:javascript
复制
WebRequest request = WebRequest.Create(url);
return Task.Factory.FromAsync(request.BeginGetResponse, result =>
{
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
    ...
}

代码语言:javascript
复制
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
{
    ...
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24321966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档