C# 用WebRequest的访问post发送到远程url时怎么远程url读取不到cookies

flyso 2012-04-11 04:37:56
C# 用WebRequest的访问post发送到远程url时怎么远程url读取不到cookies

如果直接访问远程url是ok的,如果用a页面在C#里post到远程url时,就有问题了,读取不到cookies,致使程序没办法用

请问手帮忙。。
a页面主要代码:
private static string CallWebPage(string url, string postDataStr, Encoding Encod)
{
string rStr = "";
System.Net.WebRequest req = null;
System.Net.WebResponse resp = null;
System.IO.Stream os = null;
System.IO.StreamReader sr = null;
try
{
//创建连接
req = System.Net.WebRequest.Create(url);
//设置访问方式和发送的请求数据的内容类型
if (string.IsNullOrEmpty(postDataStr))
{
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "GET";
}
else
{
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
if (Encod == null)
{
Encod = System.Text.Encoding.Default;
}
byte[] bytes = Encod.GetBytes(postDataStr);
req.ContentLength = bytes.Length;
os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
}

//读取返回结果
resp = req.GetResponse();
sr = new System.IO.StreamReader(resp.GetResponseStream(), System.Text.Encoding.Default);
rStr = sr.ReadToEnd();
}
catch (Exception ex1)
{
//LogUtil.Warn("HttpUtil.CallWebPage 异常:" + ex1.Message);

}
finally
{
try
{
//关闭资源
if (os != null)
{
os.Dispose();
os.Close();
}
if (sr != null)
{
sr.Dispose();
sr.Close();
}

if (resp != null)
{
resp.Close();

}


if (req != null) req = null;
}
catch (Exception ex2)
{
//LogUtil.Exception("HttpUtil.CallWebPage 关闭连接异常:" + ex2.Message);
}
}
return rStr;
}
调用代码:string r = CallWebPage("http://xx.com/count.aspx", "username=2222222222",null);

b页面主页代码:
string guid = HttpContext.Current.Request.Cookies["guid"] == null ? "" : HttpContext.Current.Request.Cookies["guid"].Value;
if (!string.IsNullOrEmpty(guid))
{
string username = Request.QueryString["username"];
new Count_DAL().AddUserInfo(username);
Response.Write("1:成功");
}
else
{
Response.Write("2:失败,无guid的Cookies");
return;
}


直接http://xx.com/count.aspx?username=2222222222时,执行都是成功的,返回的是1

用a页面post或get调用的方式,老是返回的2,就是失败,真正原因,就是通过这种方式好像在b页面得不到cookies,所以只能返回2,我在网上搜了好多方法,都是返回的2,都不支持b页的获得本来应该有的cookies,请高手指点
...全文
241 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyso 2012-04-12
  • 打赏
  • 举报
回复
有高手指点一下吗
flyso 2012-04-12
  • 打赏
  • 举报
回复
Cannot implicitly convert type 'System.Net.WebRequest' to 'System.Net.HttpWebRequest'. An explicit conversion exists (are you missing a cast?)
flyso 2012-04-12
  • 打赏
  • 举报
回复
这个不好使啊,有错误,我用的是ASP.NET(C#) 做web的
Rotaxe 2012-04-11
  • 打赏
  • 举报
回复
希望下面的代码对你有用
private System.Net.CookieContainer GetCookie()
{
HttpWebRequest req;
HttpWebResponse result;
object cookies = new System.Net.CookieContainer();
req = WebRequest.Create("http://...");
req.CookieContainer = cookies;
result = req.GetResponse();
req.Abort();
return cookies;
}

private void Parse1()
{
HttpWebRequest req;
System.IO.StreamWriter reqStreamWriter;
HttpWebResponse result;
Stream strReceiveStream;
string strResult;
StreamReader sr;
System.Net.CookieContainer cookies;
cookies = GetCookie();
req = WebRequest.Create("http://...");
req.CookieContainer = cookies;
result = req.GetResponse();
if (result.StatusCode == HttpStatusCode.OK) {
strReceiveStream = result.GetResponseStream();
sr = new StreamReader(strReceiveStream);
strResult = sr.ReadToEnd();
Console.WriteLine(strResult);
} else {
Console.WriteLine("ERROR");
}
strReceiveStream.Close();
req.Abort();
sr.Close();
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧