如何使用PCL' HttpWebRequest禁用AllowAutoRedirect

时间:2014-07-28 14:49:45

标签: c# windows-phone-7 networking portable-class-library

我将WP7的lib重写为PCL。我有一个使用 HttpWebRequest' AllowAutoRedirect = false; 属性的函数。这对于正确登录非常重要。尝试将此功能复制粘贴到PCL项目时,我很失望。

Error   1   'System.Net.HttpWebRequest' does not contain a definition for 'AllowAutoRedirect' and no extension method 'AllowAutoRedirect' accepting a first argument of type 'System.Net.HttpWebRequest' could be found (are you missing a using directive or an assembly reference?)

有任何解决方法如何修复它?

2 个答案:

答案 0 :(得分:0)

如果PCL项目面向Windows Phone 7,则无法在PCL项目中执行此操作。但是,您可以使用Visual Studio Express 2010 for Windows Phone创建Windows Phone 7库:

http://www.visualstudio.com/en-US/products/visual-studio-express-vs

您仍然可以将代码保存在PCL中,只需从Windows Phone 7库项目中注入HttpWebrequest即可。我知道它很乱,但它可能是实现它的唯一方法,而不必为不同的平台提供重复的库。

答案 1 :(得分:-1)

我在msdn论坛上找到了解决方案,但需要首先从nuget安装可移植的http cline库:

Install-Package Microsoft.Net.Http

这是我修改过的代码的和平。

HttpClientHandler hch = new HttpClientHandler();
hch.AllowAutoRedirect = false;
HttpClient hc = new HttpClient(hch);

StringContent queryString = new StringContent(string.Format("login={0}&password={1}", Uri.EscapeUriString(username), Uri.EscapeUriString(password));
queryString.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded");

HttpResponseMessage msg = await hc.PostAsync("http://www....", queryString);
string responseBody = await msg.Content.ReadAsStringAsync();
...

希望它会对某人有所帮助