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;

历史博文

标签:, , ,
十一月 23, 2008 at 4:04 下午 by yippee 1,054 次
Category: Dev
Tags: , , ,