読者です 読者をやめる 読者になる 読者になる

やっとわかったPOSTの方法

またまた、元ネタはプヨぷよ氏です。
SearchActionCreatorというUserActionスクリプトというのがあります。
UserAction スクリプト配布 - Fenrir User Community

詳しくは配布先で。




僕は前からスクリプトでPOSTし、レスポンスをsleipnirで表示したいと思っていました。GETメソッドなら簡単です。検索した結果表示画面のURLからクエリをみればOK
以下がその簡単なサンプルです。選択文字列をgoogleで検索します。

var document = _document;
var window   = _window;
var pnir     = new ActiveXObject("Sleipnir.API");

var copiedtext = document.selection.createRange().text;
pnir.NewWindow("http://www.google.co.jp/search?hl=ja&q="+copiedtext+"&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja",true);
//pnir.NewWindow("http://www.e-hon.ne.jp/bec/SA/Forward?submitLabel=%8C%9F%8D%F5%8AJ%8En&%8C%9F%8D%F5%8AJ%8En=btnKodawari&%83N%83%8A%83A=btnClear&mode=kodawari&shomei="+copiedtext+"",true);


//終了処理
window = null;
document = null;
pnir = null;

中にはサイト上ではPOSTで検索してるんだけど、リクエストクエリをそのままGETメソッドで送ってしまってもちゃんとレスポンスを返してくれるところもあります。(本当はこんなリクエストの仕方はよろしくないんだろうけど・・・)
上記スクリプトの6行目をコメントアウト(行頭に//と入力)して次の行のコメント行の先頭の//を削除して保存してください。
実行すると選択文字列をオンライン書店e-hon : 本 コミック 雑誌 通販で検索します。
e-honでは通常POSTメソッドで検索しますが、この通信をFiddler Web Debugger - A free web debugging toolFirefox+LiveHTTPHeaders拡張などを使ってリクエストボディを見ます。
POST先のURLとその文字列を?で繋げばOK
でも、クエリ文字が多すぎたり、サーバ側がはじいたり?するサイトではこの方法でもだめなんです。
前置きが長すぎてやっとエントリータイトルの内容まで進んできたのですが疲れてしまいました。
続きは近々書きます。