KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > トラックバック送信の仕様と実装メモ

トラックバック送信の仕様と実装メモ

ちょいと使いそうだったんでメモ

下記ページがとても参考になります。

トラックバックを送信するための仕様

  • HTTP POST でリクエストを送信。GETは廃止
  • コンテンツのコンテントタイプは必ず application/x-www-form-urlencoded

指定可能なパラメータ

title
エントリのタイトル
excerpt
エントリの要約
url
エントリの permalink。(URL)
blog_name
post した(クライアント側)ブログの名前

結果

送信結果は簡単なXMLで返される

XML
  1.  // 成功の場合
  2.  <?xml version="1.0" encoding="utf-8"?>
  3.  <response>
  4.  <error>0</error>
  5.  </response>
  6.  
  7.  // エラーの場合
  8.  <?xml version="1.0" encoding="utf-8"?>
  9.  <response>
  10.  <error>1</error>
  11.  <message>The error message</message>
  12.  </response>

Zend_Http_Clientを利用して実装

せっかくPHP5なのでZend_Http_Clientを利用しようかと思います。 PHP4の場合は、PEAR::Services_Trackbackが使えそう。

PHP
  1.  <?php
  2.  require_once("Http/Client.php");
  3.  
  4.  // エントリーのタイトル
  5.  $title = "トラックバック送信の仕様と実装メモ";
  6.  
  7.  // 内容
  8.  $excerpt = "適当にトラックバック送信の仕様と実装のメモするよ。";
  9.  
  10.  // エントリーのURL
  11.  $url = "http://www.kantenna.com/test.php";
  12.  
  13.  // ブログのタイトル
  14.  $blog_name = "情報備忘録";
  15.  
  16.  // インスタンス作成
  17.  $client = new Zend_Http_Client();
  18.  
  19.  // 送信先は$client->setUri()を利用する。
  20.  // コンストラクタで設定してもよい 例)new Zend_Http_Client($url);
  21.  $client->setUri("http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/429");
  22.  
  23.  // 独自のヘッダを指定するには setHeaders() メソッドを使用します。
  24.  $client->setHeaders("Content-Type: application/x-www-form-urlencoded");
  25.  
  26.  //setParameterPost() メソッドを利用してパラメータの追加
  27.  $client->setParameterPost(array(
  28.   "title" => $title,
  29.   "excerpt" => $excerpt,
  30.   "url" => $url,
  31.   "blog_name" => $blog_name
  32.  ));
  33.  
  34.  // 送信
  35.  //Zend_Http_Responseオブジェクトが返ってくる。
  36.  $response = $client->request("POST");
  37.  
  38.  // 送信内容の確認
  39.  var_dump($client->getLastRequest());
  40.  
  41.  // Zend_Http_Responseの中身
  42.  var_dump($response);
  43.  ?>

実行結果

var_dump($client->getLastRequest())
  1.  string 'POST /cgi-bin/mt/mt-tb.cgi/429 HTTP/1.1
  2.  
  3.  Host: www.kantenna.com
  4.  
  5.  Connection: close
  6.  
  7.  Accept-encoding: gzip, deflate
  8.  
  9.  User-Agent: Zend_Http_Client
  10.  
  11.  Content-Type: application/x-www-form-urlencoded
  12.  
  13.  Content-Length: 494
  14.  
  15.  
  16.  
  17.  title=%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF%E9%80%81%E4%BF%A1%E3%81%AE%E4%BB%95%E6%A7%98%E3%81%A8%E5%AE%9F%E8%A3%85%E3%83%A1%E3%83%A2&excerpt=%E9%81%A9%E5%BD%93%E3%81%AB%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF%E9%80%81%E4%BF%A1%E3%81%AE%E4%BB%95'... (length=712)
var_dump($response)
  1.  object(Zend_Http_Response)[18]
  2.   protected 'version' => string '1.1' (length=3)
  3.   protected 'code' => int 200
  4.   protected 'message' => string 'OK' (length=2)
  5.   protected 'headers' =>
  6.   array
  7.   'Date' => string 'Sun, 25 Jan 2009 06:09:17 GMT' (length=29)
  8.   'Server' => string 'Apache' (length=6)
  9.   'Pragma' => string 'no-cache' (length=8)
  10.   'Connection' => string 'close' (length=5)
  11.   'Transfer-encoding' => string 'chunked' (length=7)
  12.   'Content-type' => string 'text/xml; charset=utf-8' (length=23)
  13.   protected 'body' => string '4f
  14.  
  15.  <?xml version="1.0" encoding="utf-8"?>
  16.  <response>
  17.  <error>0</error>
  18.  </response>
  19.  
  20.  
  21.  0
  22.  
  23.  
  24.  
  25.  ' (length=90)
プログラミングPHP 第2版
作者:Peter MacIntyre | 価格:¥ 3,990

トラックバック(0)

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。

2012
01.21

[PHP]共有サーバーユーザーのためのPEARインストール方法

共有サーバーでは自由にPEARのパッケージがインストールできないので、 プロジェクトローカルに設置することになりますが、以前httpベースのものを使ってみたんですけど、 やたら重くて使い物にならなかったので、僕は普通にFTPでアップするようにしてます。

ってことでプロジェクトローカルへのPEARのインストール方法。