需要注意:
1.form的数据必须用rawurlencode编码联起来。
2.必须提交content-length长度
3.post表单的数据必须跟在/r/n/r/n后面。
- $data["channel"]=$moRow['serviceCode'];
- $data["mobile"]=$moRow['mobile'];
- $data["gateway"]=$moRow['gateway'];
- $data["isp"]=$moRow['isp'];
- $data["linkid"]=$moRow['linkid'];
- $data["msg"]=$content;
- while (list($k,$v) = each($data)) {
- $post .= rawurlencode($k)."=".rawurlencode($v)."&";
- }
- $post = substr( $post , 0 , -1 );
- $len = strlen($post);
- //发送
- $host = "localhost";
- $file = "/mtApp/send.php";
- $fp = @fsockopen( $host , 80, $errno, $errstr, 30);
- if (!$fp) {
- echo "$errstr ($errno)/n";
- } else {
- $receive = '';
- $out = "POST $file HTTP/1.1/r/n";
- $out .= "Host: $host/r/n";
- $out .= "Content-type: application/x-www-form-urlencoded/r/n";
- $out .= "Connection: Close/r/n";
- $out .= "Content-Length: $len/r/n";
- $out .="/r/n";
- $out .= $post."/r/n";
- echot($out);
- fwrite($fp, $out);
- while (!feof($fp)) {
- $receive .= fgets($fp, 128);
- }
- fclose($fp);
- }
- echo $receive;
- /*一个普通的post头
- POST /cgi-bin/tech/method.cgi HTTP/1.1Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*Referer: http://localhost//other.htmlAccept-Language: zh-cnContent-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)Host: localhost:8080Content-Length: 9Connection: Keep-Alive
=======================================================================
- */
- <?php
- function get_headers($host, $url)
- {
- $headers = array();
- $fp = fsockopen ($host, 80, $errno, $errstr, 45);
- if ($fp)
- {
- fputs ($fp, "GET $url HTTP/1.0/r/n/r/n");
- while (!feof($fp))
- {
- $char = fgetc($fp);
- if($char === "/n")
- {
- //Unix/Linux等的换行是"/n" 13
- //windows的换行是回车+换行,即"/r/n"
- if (ord($header) === 13) { return($headers); }
- else { array_push($headers, trim($header)); }
- unset($header);
- }
- else { $header = $header.$char; }
- }
- fclose ($fp);
- }
- }
- ?>