20080222 c# post 模拟 接收 php
http://www.yippeesoft.com
Windows端应用程序
1,首先建立两个POST变量,这两个POST变量模拟ASP中的Form的name~~~(我瞎试的,果然是模拟form)
System.Net.WebClient WebClientObj=new System.Net.WebClient();
System.Collections.Specialized.NameValueCollection PostVars=new System.Collections.Specialized.NameValueCollection();
PostVars.Add("c",textBox2.Text);
PostVars.Add("b",textBox3.Text);
//textBox2.Text里面存的是要POST的信息哈
2,然后传送给一个网页:http://www.dc9.cn/t/default.aspx
try
&leftsign;
byte[] byRemoteInfo=WebClientObj.UploadValues("http://www.dc9.cn/t/default.aspx","POST",PostVars);
//下面都没用啦,就上面一句话就可以了
string sRemoteInfo=System.Text.Encoding.Default.GetString(byRemoteInfo);
//这是获取返回信息
textBox1.Text=sRemoteInfo;
axDHTMLEdit1.DocumentHTML=sRemoteInfo;
//下面用了COM组件WebBrowser,让他显示返回信息,没什么用,可以不看。
object url="about:blank";
object nothing=System.Reflection.Missing.Value;
this.axWebBrowser1.Navigate2(ref url,ref nothing,ref nothing,ref nothing,ref nothing);
((mshtml.IHTMLDocument2)this.axWebBrowser1.Document).write(sRemoteInfo);
&rightsign;
catch
&leftsign;&rightsign;
WEB端应用程序
1,在Page_Load里写
string MyText=System.Web.HttpContext.Current.Request.Form["c"];
string MyText2=System.Web.HttpContext.Current.Request.Form["b"];
//获取两个POST来的信息
StreamWriter sw=new StreamWriter(Server.MapPath(".")+"\\\\1.shtml", true, Encoding.UTF8);
sw.Write(MyText);
sw.Write(MyText2);
sw.Close();
//true的意思就是以append的方式写入POST来的信息
function httppost($sURL,$aPostVars,$nMaxReturn=0)&leftsign;
//set_time_limit(100);
$url = parse_url($sURL);
if (!$url) return "";
if (!isset($url[\'port\'])) $url[\'port\'] = 80;
if (!isset($url[\'query\'])) $url[\'query\'] = "";
$fp = fsockopen($url[\'host\'], 80);
if (!$fp)&leftsign;
return "";
fclose($fp);
exit;
&rightsign;
$postctt="";
if(is_array($aPostVars))&leftsign;
foreach($aPostVars as $k=>$v)&leftsign;
if($postctt!="") $postctt.="&";
$postctt.=($k."=".urlencode($v));
&rightsign;
&rightsign;
$request = "POST ".$url[\'path\']."?".$url[\'query\']." HTTP/1.1\\r\\n";
$request .= "Host: ".$url[\'host\']."\\r\\n";
$request .= "Content-Type: application/x-www-form-urlencoded\\r\\n";
$request .= "User-Agent: roastduck Http/1.1\\r\\n";
$request .= "Accept-Language: zh-cn\\r\\n";
$request .= "Content-length: ".strlen($postctt)."\\r\\n";
$request .= "Connection: Keep-Alive\\r\\n\\r\\n";
$request .= $postctt;
fputs($fp, $request);
$tmp="";
$i=0;
while (!feof ($fp))&leftsign;
$tmp.= fgetc($fp);
$i++;
if($i>$nMaxReturn && $nMaxReturn>0) break;
&rightsign;
fclose($fp);
return $tmp;
&rightsign;
for(int i = 0;i<Request.Params.Count;i++) Response.Write("<li>" + Request.Params.Keys[i].ToString() + " = " + Request.Params[i].ToString()); Response.Write("<hr>"); for(int i = 0;i<Request.Form.Count;i++) Response.Write("<li>" + Request.Form.Keys[i].ToString() + " = " + Request.Form[i].ToString()); Response.Write("<hr>"); for(int i = 0;i<Request.QueryString.Count;i++) Response.Write("<li>" + Request.QueryString.Keys[i].ToString() + " = " + Request.QueryString[i].ToString()); Response.Write("<hr>"); for(int i = 0;i<Request.Cookies.Count;i++) Response.Write("<li>" + Request.Cookies.Keys[i].ToString() + " = " + Request.Cookies[i].ToString());
接收post过来的东西
Stream resStream = Request.InputStream;
//根据上面定义的数据流,以默认编码的方式定义一个读数据流
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
Response.Write(sr.ReadToEnd());
this.Request.QueryString["ID"].ToString();//获取查询字符串的值
this.Request.Form["ID"].ToString();//获取Post的值
request("xxx").tostring
string StrFileName="c:\\\\1.txt";
System.IO.FileStream fs = new System.IO.FileStream(StrFileName,System.IO.FileMode.Create);
System.IO.Stream ns=Request.InputStream;
byte[] nbytes = new byte[512];
int nReadSize=0;
nReadSize=ns.Read(nbytes,0,512);
while( nReadSize >0)
&leftsign;
fs.Write(nbytes,0,nReadSize);
nReadSize=ns.Read(nbytes,0,512);
&rightsign;
fs.Close();
ns.Close();
[php]
<?php
$fp = fopen("php://input",\’r\’);
$post = \’\';
while (!feof($fp)) &leftsign;
$post .= fgets($fp, 4096);
&rightsign;
fclose ($fp);
echo $post;
?>
[/php]
写了一个试验接收POST的文件
[php]
<?php
$fp = fopen("php://input",\’r\’);
$post = \’\';
while (!feof($fp)) &leftsign;
$post .= fgets($fp, 4096);
&rightsign;
fclose ($fp);
//echo $post;
/*
$headers = getallheaders();
while (list($header, $value) = each($headers)) &leftsign;
$aaa = "$header: $value<br>\\n";
$header .= $aaa;
&rightsign;
$content = $post."@@@@@".$header;
*/
$filename = \’test.txt\’;
if (is_writable($filename)) &leftsign;
if (!$handle = fopen($filename, \’a\’)) &leftsign;
print "不能打开文件 $filename";
exit;
&rightsign;
if (!fwrite($handle, $post)) &leftsign;
print "不能写入到文件 $filename";
exit;
&rightsign;
print "成功地将 $post 写入到文件 $filename";
fclose($handle);
&rightsign; else &leftsign;
print "文件 $filename 不可写";
&rightsign;
?>
[/php]
<SCRIPT LANGUAGE="JavaScript">
<!–
var ajax=new Ajax();
str="a=<root><name>10000</name><sex>select * from words where</sex></root>&b=c";
arg=obj(str);
var done=function(o)&leftsign;alert(err(o));&rightsign;;
var load=function()&leftsign;&rightsign;;
ajax.open("getobj.php","POST",done,load,str);
//–>
</SCRIPT>
php端
<? header("content-Type: text/html; charset=utf-8");?>
<?
$dom = new DomDocument;
$dom->loadXML($_POST[\'a\']);
$company = $dom->getElementsByTagName(\’sex\’)->item(0)->nodeValue;
print $company;
print_r($_POST);
?>
<?php
$strName = "fs2you_f_name";
$strLink = "fs2you_f_link";
$strResult = "fs2you_f_result";
$strDescription = "fs2you_f_description";
if (isset($_POST[$strResult])) &leftsign;
$RAW_POST = file_get_contents("php://input");
$RAW_POST = str_replace("=", "[]=", $RAW_POST);
parse_str($RAW_POST, $my_post);
for ( $i=0;$i<count($my_post[$strResult]);$i++) &leftsign;
echo "<p>\\n文件名:".$my_post[$strName][$i]."<br />\\n"
."描述:".$my_post[$strDescription][$i]."<br />\\n"
."上传状态:".$my_post[$strResult][$i]."<br />\\n"
."链接:".$my_post[$strLink][$i]."<br />\\n</p>\\n";
&rightsign;
&rightsign;
?>
编码
public string EncodeBase64(string code_type,string code)
&leftsign;
string encode = "";
byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);
try
&leftsign;
encode = Convert.ToBase64String(bytes);
&rightsign;
catch
&leftsign;
encode = code;
&rightsign;
return encode;
&rightsign;
解码
public string DecodeBase64(string code_type,string code)
&leftsign;
string decode = "";
byte[] bytes = Convert.FromBase64String(code);
try
&leftsign;
decode = Encoding.GetEncoding(code_type).GetString(bytes);
&rightsign;
catch
&leftsign;
decode = code;
&rightsign;
return decode;
&rightsign;
历史博文
- Moveable c# drag - 2009
- Design Surface Extender c# - 2009
- 20070622 asp.net wml vs2005 - 2007
- 0531 死在路上 人的本质 ActiveX 屏蔽 - 2006
- MYSQL UTF8 UTF-8 GB2312 LATIN 乱码 - 2005
- BO-BLOG 备份 插件 - 2005
- 突发性心脏病 人生 IT - 2005
- 脚本 VBS 配置 IP 网络 - 2005