- 论坛徽章:
- 0
|
如何向远程服务器发送一个http的get请求?
你要什么?这个函数基本上都在这里了. 实际上它是类的一个方法.我是参照wordpress里面的track back模块改写的.你可以去下一个wordpress看看,
imbiss的Trackbak类(功能尚未完整).为方便阅读,现在转为gb2312了。
- <?php
- // 这是一个trackback sender程序
- // 中文技术规范参照 http://hedong.3322.org/archives/000351.html
- // 英文参照 http://www.sixapart.com/pronet/docs/trackback_spec
- // 现在的问题,在url后面附加了信息以后还要在正文内添加吗?
- //TPP.php
- //TrackbackPing.php
-
- class ibs_trackback{
- var $debug = true;
- var $debuginfo; //用来保存debug信息
- var $version = 0.1;
- var $response; // save response from server
-
- function ibs_trackback(){
- if ($this->;debug){
- $debuginfo= "<pre>;\n";
- }
- }
-
- function destory(){
- if($this->;debug){
- $this->;debuginfo .="</pre>;\n";
- //print($this->;debuginfo);
- }
- }
-
- function getResponse(){
- return $this->;response;
- }
-
- function getDebuginfo(){
- return $this->;debuginfo;
- }
- //Sends a trackback ping to a specified trackback URL.
- // 发送单个TB ping,Send a Trackback
- //真正用来实现trackback功能的参数
- //传入的参数
- //$trackback_url: TrackBack Ping URL
- //$title: your posts title
- //$excerpt: your texts excerpt
- //$fromurl: your posts url,an best your permalink
- //$fromblogname: your blogs name
- //$charst: your texts charset. Not standard, but many blog can untderstand this.
- function send_trackback_ping($trackback_url, $title, $excerpt, $fromurl, $fromblogname, $charset) {
- $title = rawurlencode($title);
- $excerpt = rawurlencode($excerpt);
- $blog_name = rawurlencode($fromblogname);
- $url = rawurlencode($fromurl);
- $charset = rawurlencode($charset);
- $query_string = "url=".$url."&title=".$title."&blog_name=".$blog_name."&excerpt=".$excerpt;
-
- if($this->;debug){ $this->;debuginfo .= "\nQuery Stirng=".$query_string;}
- $trackback_url = parse_url($trackback_url);//把目标地址分解为数组
- //如果目标地址有?,query就是问号后面的参数。有些blog使用固定地址所以没有?
- //到底url参数是通过query传递还是post传递的呢?
- if ((isset($trackback_url["query"])) && ($trackback_url["query"] != ""))
- { //如果有?,就有query
- $trackback_url["query"] = "?" . $trackback_url["query"]."&".$query_string;
- if($this->;debug){
- $this->;debuginfo .= "\n对方的tb地址包含一个问号,在他的参数后面附加上我的blog信息,这样他的rest参数为".
- $trackback_url["query"];
- }
- }
- else {
- $trackback_url["query"] = "?".$query_string;
- if($this->;debug){
- $this->;debuginfo .= "\n对方的tb地址不包含?,手工加上.这样他的rest参数为".
- $trackback_url["query"];
- }
- }
-
- //print_r($trackback_url);
- //$http_request = 'POST ' . $trackback_url['path'] . ($trackback_url['query'] ? '?'.$trackback_url['query'] : '') . " HTTP/1.0\r\n";
-
-
- if($this->;debug){ $this->;debuginfo .= ("urlquery=".$trackback_url["query"]); }
-
- $http_request .= "POST ".$trackback_url['path'].$trackback_url["query"]." HTTP/1.1\r\n" ;
- $http_request .= 'Host: '.$trackback_url['host']."\r\n";
- $http_request .= 'Content-Type: application/x-www-form-urlencoded.'."\r\n";
- $http_request .= 'Content-Length: '.strlen($query_string)."\r\n";
- $http_request .= "User-Agent: ibsblog" ;
- $http_request .= "Connection: close\r\n\r\n";
- $http_request .= $query_string."\r\n"; //最后加上我的query
- //构造请求字符串
- if ( '' == $trackback_url['port'] )
- $trackback_url['port'] = 80;
- //打开端口
- $fs = @fsockopen($trackback_url['host'], $trackback_url['port'], $errno, $errstr, 3);
- if (!is_resource($fs)){
- $this->;response .= "trackback_send: Couldn't connect to ".$trackback_url['host'].",Port ".$trackback_url['port'];
- return false;
- }
- //发送请求
- fputs($fs, $http_request);
- if($this->;debug){
- $this->;debuginfo .= "\n<b>;Your Http Request:</b>;\n".$http_request ;
- }
-
- //printf("http request:%s", $http_request);
- //捕获返回信息
- $i=0;
- while(!feof($fs)) {
- $this->;response .= fgets($fs, 4096);
- if($i>;100){
- printf("Error. Response is more than %s Byte!", 4096*$i);
- return false;
- }
- $i++;
- }
- fclose($fs);//关闭端口
- // Did the trackback ping work
- strpos($this->;response, '<error>;0</error>;') ? $return = true : $return = false;
- // send result
- return $return;
- }
-
- }
-
- /*
- //test
- $zielurl = "http://www.yculblog.com/trackback/4/649425";//这种blog没有?在参数里
- $zielurl = "http://www.blogdriver.com/blog/tb.b?diaryID=658589 ";
- $zeilphpurl = "http://140.111.66.31/blog/trackback.php?id=2"; //测试通过 //http://140.111.66.31/blog/index.php?op=ViewArticle&articleId=2&blogId=2
-
- //$zielurl = "http://127.0.0.1/wordpress/wp-trackback.php?p=14";
- $myblogurl="http://www.stud.uni-karlsruhe.de/~uu5i/blog/index.php?aid=141";
- $myexcerpt = "借宝地测试一下";
- $mytitle = "test";
- $myblogname="test blog";
- $mycharset = "UTF-8";
-
- //$ping = $zielurl ."&url=".$myblogurl."&excerpt=".$myexcerpt."&title=".$mytitle."&blog_name=".$myblogname."&charset=".$mycharset."&uri=".$myblogurl;
- $ping = $zielurl ."&url=".$myblogurl;
-
-
- $mytb = new ibs_trackback;
- $status = false;
- $status=$mytb->;send_trackback_ping($zielurl, $mytitle,$myexcerpt,$myblogurl,$myblogname, $mycharset );
- if($status){
- print("<h1>;Sucessuful!</h1>;\n");
- }
- else{ print("<h1>;Failed!</h1>;\n");}
- $debug = $mytb->;getdebuginfo();
- $response = $mytb->;getResponse();
- $mytb->;destory();
-
- printf("<b>;Debug info:</b>;:\n %s\n", $debug);
- printf("<b>;Respons:</b>;\n%s\n", $response);
-
-
- /*
- $client = new IXR_Client($zielurl);//创建客户端
- $client->;timeout = 3; //设置3秒超时
- $client->;debug = true;
- $pagelinkedfrom= $zielurl;
- $pagelinkedto = urldecode($myblogurl);
- if ( !$client->;query('pingback.ping', array($pagelinkedfrom, $pagelinkedto) ) ){
- //debug_fwrite($log, "Error.\n Fault code: ".$client->;getErrorCode()." : ".$client->;getErrorMessage()."\n");
- $client->;getErrorMessage();
- }
- else{
- add_ping( $post_ID, $pagelinkedto );
- }
- */
- ?>;
- ----------------------------------------------------------------
- This file is converted by NJStar Communicator - www.njstar.com
- ----------------------------------------------------------------
复制代码 |
|