XGのブログ

XGのブログ

ブログの説明を入力します。

Amebaでブログを始めよう!
XML-RPCとAtomAPIを使ってブログ投稿を興味本位でやってみた。
ブログによってAPIは違えど1個対応すると結構色々と使いまわせるっぽい。
Amebaだけなんかめんどくさそうだったから無視。
かっこつけてんじゃねえぞ!


livedoorはAtomAPIなんだけどちょっとハマったからメモ。
ある程度長い記事を投稿すると失敗する。
Only the 100-continue expectation is supported.

文字数制限なのか?と思ってFAQを調べて見た。
http://help.livedoor.com/blog/qa2111

■本文:半角32000文字(全角16000文字)
■追記:半角64000文字(全角32000文字)
■コメント:半角1600文字(全角800文字)


十分な長さじゃないか。
そんな全然そんな長くなくてもアウトだった。
で、エラーメッセージを見てみたら
The client sent

Expect: 100-continue


何コレ?
俺が「Expect: 100-continue」というヘッダを送ってる?
身に覚えがございません。

ググってみたら答えがあった。
http://d.hatena.ne.jp/tokuhy/20091202/1259766797
つまりcurlが勝手にヘッダを追加してるらしい。

↓こんな感じにヘッダ上書きしてみた。

$headers[] = "Expect:";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);


上手く行きました。

携帯サイトをxhtmlでコーディングしてると結構忘れがちなのが
application/xhtml+xml
の指定。
確かDoCoMoはこれが無いと表示がダメだった気がする。
header ("Content-Type: application/xhtml+xml; charset=UTF-8");
こんな感じで書くんだけどこれを書くと自動文字変換はされなくなるので注意。
mb_http_output()
とかしてもダメ。
内部文字コードと出力文字コードが違う場合は自前で変換しましょうって話でした。
何度もこれでハマってるのに忘れるんだよなあ。
そういえばWindows環境のPHPで拡張機能「Memcached」の導入について書いてなかった。


PHPの拡張のdll
php_memcache.dll
が必要な訳だけどウェブでなかなか見つからなかった。
http://museum.php.net/php5/
で環境に合うバージョンのパッケージをダウンロードしよう。
自分の場合は
pecl-5.2.6-Win32.zip
だった。

解凍した中に入ってる
php_memcache.dll
をphpの拡張フォルダ内にコピーする
※php.iniのextension_dir参照

php.iniのextensionの項辺りに
extension=php_memcache.dll
を追記してapacheを再起動

phpinfo()
で確認して「memcache」が足されてればOK。