PEARのHTTP_Requestを使ってアクセスする方法はわかりました。
※先の記事「HTTP_Requestを使ってアクセスしてみた」参照
これを使って、いろいろ試していてちょっとはまったことがあったので、メモしときます。
チェックボックスの情報をPOST送信する
例えば、こんなチェックボックスを使ったフォームのページがあるとします。
< form method="POST" action="hogehoge.asp"> < input type="checkbox" name="koumoku" value="1"/>1< br /> < input type="checkbox" name="koumoku" value="2"/>2< br /> < input type="checkbox" name="koumoku" value="3"/>3< br /> < /form>
このページに対して、HTTP_Requestを使ってアクセスする時に、どのようにチェックボックスの情報を送信したらいいのかわからず、はまってしまいました。
調べてみたところ、フォームページのPOST先プログラムがASP(Active Server Pages)の場合には、
『,』で区切られた『1,2,3』といった文字列で渡されます。
ということなので、
< ?php require_once 'HTTP/Request.php'; //PEARクラス呼び出し $url = 'http://xxxxxxx.co.jp/hogehoge.asp'; $useragent = "[ユーザーエージェント]"; $rq = new HTTP_Request($url); $rq->setMethod(HTTP_REQUEST_METHOD_POST); $rq->addPostData('koumoku', '1,2,3'); $rq->setHttpVer('1.1'); $rq->addHeader('User-Agent', $useragent); if ( PEAR::isError($rq->sendRequest()) ) { $err_msg = 'sendRequest()でエラー発生したため、処理を中断しました。'; echo $err_msg; exit; } if ( $rq->getResponseCode() <> '200' ) { $err_msg = 'リターンコードが200以外だったため、処理を中断しました。'; echo $err_msg; exit; } $getHtml = $rq->getResponseBody(); echo $getHtml; ?>
このような感じでやってみたらうまく処理されました。