
C#发送POST请求后不能操作COOKIE
本地客户端是C#,另一端执行服务器的PHP页面[code=csharp]privatevoidsendPost(stringpostData,stringpage){UT...
本地客户端是C#,另一端执行服务器的PHP页面
[code=csharp]
private void sendPost(string postData,string page)
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] data;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.test.com/" + page);
data = encoding.GetBytes(postData);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), encoding);
string content = reader.ReadToEnd();
reader.Close();
myResponse.Close();
}
string postData = "test=ok";
sendPost(postData ,"test.php");
[/code]
另一端执行的test.php的代码如下
[code=php]
<?php
if(isset($_POST["test"]))
{
setcookie("test",$_POST["test"],time()+3600);
}
?>
[/code]
这样执行后,远程端并不能生成cookie,奇怪的是,如果本地客户端我不用C#,而用html页面直接向另一端的test.php发送post请求是可以生成cookie的
c#的http请求有缺陷啊 展开
[code=csharp]
private void sendPost(string postData,string page)
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] data;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create("http://www.test.com/" + page);
data = encoding.GetBytes(postData);
myRequest.Method = "POST";
myRequest.ContentType = "application/x-www-form-urlencoded";
myRequest.ContentLength = data.Length;
Stream newStream = myRequest.GetRequestStream();
newStream.Write(data, 0, data.Length);
newStream.Close();
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), encoding);
string content = reader.ReadToEnd();
reader.Close();
myResponse.Close();
}
string postData = "test=ok";
sendPost(postData ,"test.php");
[/code]
另一端执行的test.php的代码如下
[code=php]
<?php
if(isset($_POST["test"]))
{
setcookie("test",$_POST["test"],time()+3600);
}
?>
[/code]
这样执行后,远程端并不能生成cookie,奇怪的是,如果本地客户端我不用C#,而用html页面直接向另一端的test.php发送post请求是可以生成cookie的
c#的http请求有缺陷啊 展开
展开全部
不是请求的缺陷 是返回的cookie你没取到
返回的cookie不是在相应数据体中的而是在相应头的set-cookie中
可以这样取
myResponse.Header["set-cookie"]你试下
返回的cookie不是在相应数据体中的而是在相应头的set-cookie中
可以这样取
myResponse.Header["set-cookie"]你试下
追问
我的C#客户端不是取cookie, cookie的操作都是由PHP实现的, 而且就算我在PHP里输出
echo $_COOKIE["test"] , C# 客户端也取不到 (已经按你说的加了 myResponse.Header["set-cookie"] )
追答
可以用抓包软件看下返回的数据包是否是正确的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |