平成30/ 2018-10-24 08:55
PHP/ fsockopen() /20160607

-------------------------------------------------------------------------------------------------------------------------
バイナリを送信するには、boundary で送信しないといけないみたい。

----
Thanks.
----
Upload multiple files and post vars with fsockopen
http://stackoverflow.com/questions/16640143/upload-multiple-files-and-post-vars-with-fsockopen

fsockopen
http://php.net/manual/ja/function.fsockopen.php

7.2 The Multipart Content-Type
https://www.w3.org/Protocols/rfc1341/7_2_Multipart.html


-------------------------------------------------------------------------------------------------------------------------
$host = "999.999.999.999";
$fp    = @fsockopen("ssl://{$host}", 443);
//$fp    = fsockopen("{$host}", 80);
if(
!$fp
){
    exit;
}
$path  = "/xxx/xxx.php";

$param = array(
"jb="  . urlencode("AUTH"),
"rt="  . urlencode("1"),
"cod=" . urlencode("1111112"),
"cn="  . urlencode("4444333322221111"),
;
$param = implode("&", $param);

$cookie = array();
foreach($_COOKIE as $key => $val){
    $cookie[] = rawurlencode($key). "=". rawurlencode($val). "; ";
}
$cookie = implode("", $cookie);

$header = array();
$header[] = "POST " . $path . " HTTP/1.1";
$header[] = "Host: {$host}";
//$header[] = "Authorization: Basic ".base64_encode("ID:PASSWORD");
$header[] = "Content-Type: application/x-www-form-urlencoded";
$header[] = "Cookie: {$cookie}";
$header[] = "Content-Length: " . mb_strlen($param, "utf8");
$header[] = "Connection: Close";
$header[] = "";
$header[] = $param;
$header = implode("\r\n", $header);

$res = '';
fputs($fp, $header);
while (!feof($fp)) {
   $res .= fgets($fp);
}
echo $res;
fclose($fp);
-
1. fsockopenには'ssl://...'のように記述し、"Host:"にはドメイン(999.999.999.999)のみを記述する。
2. Content-Lengthは要求されることが多いのでつけとく。
3. パラメータ(上記の$param)は、'?xxx=xxx&yyy=yyy'のようにクエスチョンつけない。'xxx=xxx&yyy=yyy'とする。





____ Thanks.
【php】fsockopen()してhttps(SSL)するとき
http://www.softel.co.jp/blogs/tech/archives/1858

HTTPSでPOSTリクエストの結果を取得
http://webcache.googleusercontent.com/search?q=cache:ymQ_-BI3xD4J:bitter-development.blogspot.com/2007/05/httpspost.html+&cd=2&hl=ja&ct=clnk&gl=jp

ソケット通信でのBasic認証
http://masayoshilogs.hatenablog.com/entry/20100723/1279867532


socket http httpd 通信