[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 メーリングリストの案内