自作ブログのPing送信について
お世話になります。
現在自作ブログからphpによる各PingサーバへのPing送信を試みていますが、
チェックしてみると下記のようなエラーが出てしまいます。
色々と調べて、サンプルを応用してみたのですが。。。
原因がわかりましたら是非ご教授ください。
よろしくお願いいたします。
下記のFunctionを実行します。
$titleと$siteurlの値は問題なく入っています。
function SendPing($server, $title, $siteurl){
foreach($server as $value){
//送信先サーバURLをホスト名とパス名に分解する
$value = rtrim($value);
$arr = parse_url($value);
$host = $arr["host"];
$path = $arr["path"];
echo($host);
echo"<br />";
//送信先サーバをオープンする
if($sock = @fsockopen($host, 80, $errno, $errstr, 20)){
//送信データをつくる
$title = urlencode($title);
$siteurl = urlencode($siteurl);
$params = "<?xml version=\"1.0\" ?>\r\n";
$params .= "<methodCall>\r\n";
$params .= "<methodName>weblogUpdates.ping</methodName>\r\n";
$params .= "<params>\r\n";
$params .= "<param>\r\n";
$params .= "<value>$title</value>\r\n";
$params .= "</param>\r\n";
$params .= "<param>\r\n";
$params .= "<value>$siteurl</value>\r\n";
$params .= "</param>\r\n";
$params .= "</params>\r\n";
$params .= "</methodCall>\r\n";
//送信する
fputs($sock, "POST ".$path." HTTP/1.0\r\n");
fputs($sock, "Host: $host\r\n");
fputs($sock, "Content-type: text/xml\r\n");
fputs($sock, "Content-length: ".strlen($param)."\r\n");
fputs($sock, "User-Agent: MSIE7.0\r\n");
fputs($sock, "Connection: Close\r\n");
fputs($sock, "\r\n");
fputs($sock, "$param\r\n");
//リターンを受け取る
$res = "";
while (!feof($sock)){
$res .= fgetc($sock);
}
fclose($sock);
//リターンからエラーコードを解釈する
preg_match("/(\<\?xml)(.*)(\<\/methodResponse\>)/s", $res, $arr);
$res = preg_replace("/UTF-8/i", "utf-8", $arr[0]);
echo $res."<br />";
}
}
}
すると下記のようなエラーが出ます。
blog.goo.ne.jp
faultString parse error. not well formed. error occurred at line 1, column 1, byte index 0 faultCode -32700
api.my.yahoo.co.jp
ping.bloggers.jp
faultCode 105 faultString XML error: Invalid document end at line 1, column 1
rpc.technorati.jp
rpc.weblogs.com
messageCan't accept the ping because the URL must begin with http:// or https://.legalYou agree that use of the Weblogs.com ping service is governed by the Terms of Use found at www.weblogs.com.flerror1
ping.fc2.com
faultCode 1 faultString The method you requested, '', was not found.
blogsearch.google.co.jp
flerror1 messageUnable to parse XML-RPC request.
よろしくお願いいたします。
補足
ご回答、ありがとうございます。 参考URLを元に更新pingの内容を変更して試してみたいと思います。