[PHP-users 33691] Re: httpsのページに対して、POST送信をし、結果ページをテキストで取得したい
Norio Suzuki
suzuki @ tricorn.co.jp
2008年 6月 24日 (火) 09:40:26 JST
鈴木です。
At Tue, 24 Jun 2008 04:52:22 +0900,
<tanig108 @ edogawa.home.ne.jp> wrote:
>
> 考えられる問題点1:もしかしたら、サーバー(https://www.aaaa.bbbbb.cccc.jp)の
> アクセス権限が存在しないかもしれません。
> 事実、接続してみると、「Error 403--Forbidden」と表示されます。
> この場合、どのような実装を行えばよいのでしょうか?
一般的な話をすると、403 を出力しているのは相手の Web サーバなので、その
URL へのアクセスが必要ならば、相手に接続許可設定をして貰うしかありません。
ただし、、、
> ☆ソース内容:GetHttps.php
> 「
> <?php
> $fp = fsockopen('ssl://www.deal.matsui.co.jp',443,&$err_num,&$err_msg,30);
> $data = "var1=xx&var2=yy";
> $header = "POST ${PATH} HTTPS/1.0 \r\n" .
> "Host: ' . 'www.aaaa.bbbbb.cccc.jp \r\n" .
> "Accept: text/plain,text/html \r\n" .
> "User-Agent: php-client \r\n" .
> "Content-Type: application/x-www-form-urlencoded \r\n" .
> "Content-Length: ". strlen($data) . " \r\n" .
> "\r\n";
> if(!$fp){
> die('Sorry, the server is not currently available!');
> }
> // Send everything
> fputs($fp, $header . $data . " \r\n");
> $response = "";
> // Get the response
> while(!feof($fp)){
> $response .= fgets($fp,4096);
> }
> echo "★\n$err_num\n$err_msg\n";
> $fs = fopen("c:\a.out", "w");
> fputs($fs, $response);
> fclose($fs);
> ?>
このソースでは、いくつか意図が分からない部分があります。
1. 接続先のサーバ www.deal.matsui.co.jp (名前出していいのかな?)では
www.aaaa.bbbbb.cccc.jp という名前でサービス提供しているのでしょうか?
2. 取得したい URL は https://www.aaaa.bbbbb.cccc.jp/ ですか?
それとも https://www.aaaa.bbbbb.cccc.jp/zzzz.html ですか?
上のソースでは、$PATH が定義されていないようなので、前者へのリクエス
トとなっています。
あと細かいですが、HTTPS/1.0 というプロトコルは無いような?
HTTP/1.0 か HTTP/1.1 でしょう。
;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki @ tricorn.co.jp>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
;; Tel 03-5919-0041 Fax 03-5919-0042
PHP-users メーリングリストの案内