首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

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

2012-04-20 
C# 用WebRequest的访问post发送到远程url时怎么远程url读取不到cookiesC# 用WebRequest的访问post发送到远

C# 用WebRequest的访问post发送到远程url时怎么远程url读取不到cookies
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,请高手指点



[解决办法]
希望下面的代码对你有用
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(); 
}

热点排行