因为很多服务器没有开crul这个模块,所以想用非crul的方法来ping百度
于是用fsockopen去ping,不知道是不是格式问题,反馈基本都是400
网上找了很久,基本没有这方面的资料,全都是同一种方法。
下面是代码,请高人看下问题在哪里
<?php
$XML='<?xml version="1.0" encoding="gb2312"?><methodCall> <methodName>weblogUpdates.extendedPing</methodName>\r\n<params> <param><value><string>测试</string></value></param> <param><value><string>测试地址</string></value></param> <param><value><string>页面</string></value></param> </params></methodCall>';
$url='ping.baidu.com/ping/RPC2';
function ping($host, $port, $XML) {
        $fp = fsockopen($host, $port, $errno, $errstr);
     $header='POST /ping/RPC2 HTTP/1.1\r\n';
        $header.='User-Agent: request\r\n';
        $header.='Host: ping.baidu.com\r\n';
        $header.='Content-Type: text/xml\r\n';
        $header.= "Connection: close\r\n\r\n"; 
        $header.= $XML."\r\n\r\n"; 
        $contents = '';
        fputs($fp, $header);
     while ($fp && !feof($fp))
     $contents .= fread($fp, 1024);
        fclose($fp);
        return $contents;

echo ping($url,80,$XML);
?>百度XMLping

解决方案 »

  1.   

    返回这个对吗?<?xml version="1.0" encoding="UTF-8" ?> 
    - <methodResponse>
    - <params>
    - <param>
    - <value>
      <int>1</int> 
      </value>
      </param>
      </params>
      </methodResponse>
      

  2.   

    $url='http://ping.baidu.com/ping/RPC2';//加了个通讯协议
    echo ping($url, 80, $XML);function ping($url, $port, $XML) {
      $url = parse_url($url); //分析 url
      $fp = fsockopen($url['host'], $port, $errno, $errstr);
      $header="POST /$url[path] HTTP/1.1\r\n";
      $header.="Host: $url[host]\r\n";
      $header.="User-Agent: request\r\n";
      $header.="Content-Type: application/x-www-form-urlencoded\r\n"; //POST 方式要加这个头
      $header .= "Content-length: " . strlen($XML) . "\r\n";//给出数据的长度
      $header.= "Connection: close\r\n\r\n"; 
      $header.= $XML."\r\n\r\n"; 
      $contents = '';
      fputs($fp, $header);
      while ($fp && !feof($fp)) $contents .= fread($fp, 1024);
      fclose($fp);
      $ar = explode("\r\n\r\n", $contents); //分离报头和数据
      return $ar[1];
      

  3.   

    \r \n \t 这些只在双引号中生效