问题描述
以下代码向php发送一个请求。用post方式:DimBytesAsByte()=System.Text.Encoding.UTF8.GetBytes("0="+"%BRyyyy%12")DimreqAsSystem.Net.WebRequest=System.Net.WebRequest.Create("http://localhost/test.php")Withreq.Method="POST".ContentType="application/x-www-form-urlencoded;charset=UTF-8".ContentLength=Bytes.Length.Timeout=1*60*1000.Proxy=NothingEndWithUsingstreamAsSystem.IO.Stream=req.GetRequestStream()stream.Write(Bytes,0,Bytes.Length)EndUsing在php中把这post的数据输出到文件中,但是第二个%的东西没有了。php代码:$fp=fopen("test.xml","w");fwrite($fp,$_POST[0]);fclose($fp);请问这是怎么回事?谢谢
解决方案
解决方案二:
仅仅知道对方接受POST还不够,对方接受的是浏览器方式的application/x-www-form-urlencoded方式提交的数据,你就要按照它的协议来写你POST的数据。
解决方案三:
具体地说,你的"%BRyyyy%12"代表什么内容?这里的%12不符合UrlEncode标准,是什么东西呢?
解决方案四:
引用2楼sp1234的回复:
具体地说,你的"%BRyyyy%12"代表什么内容?这里的%12不符合UrlEncode标准,是什么东西呢?
没有任何意义,就是%12
解决方案五:
我试了一下,好像他把%12当成了一个字符,比如%45,就当成了E了,请问这是怎么回事?用curl发没有问题
解决方案六:
如何是他发过来的数据就是%12呢?我在php用urldecode,发现没有变化,而用curl发送,出现了问题,说明curl发送的就是%12,而用我的程序,数据是urldecode以后的。