

Client.php → Server.php へデータをPOSTでデータを送信したいです。  
送信するデータは AAA=1とBBB=2とファイルから読み込んだバイナリデータです。  
その際、Wiresharkで送信データを見る時、「bina.bin(中身のバイナリはFB EE FB
EFとします)と同じバイナリデータが表示されていてほしいです。formは使えません。

ver1のClient.phpのプログラムを示します。

[code]

    // 送信データファイル読み込み
    $SendContents = file_get_contents("C:/xampp/htdocs/bina.bin");
    //POSTデータ
    $data = array(
        "AAA" => "1",
        "BBB" => "2",
        "BinData" => $SendContents
        );
    $data = http_build_query($data, "", "&");
    $header = array(
        "Content-Type: application/x-www-form-urlencoded",
        "Content-Length: ".strlen($data)
    );
    $context = array(
        "http" => array(
            "method"  => "POST",
            "header"  => implode("\r\n", $header),
            "content" => $data
        )
    );
    // アクセスする先
    $url = "http://xxxxxxxxx/Server.php";
    file_get_contents($url, false, stream_context_create($context));
    
[/code]

上記のコードでは%エンコードされているようでして、Wiresharkに「FB EE FB EF」のデータが出ませんでした。

[code]

    ver2のClient.phpのプログラムを示します。
    $SendContents = file_get_contents("C:/xampp/htdocs/bina.bin");
    //POSTデータ
    $data = array(
        "AAA" => "1",
        "BBB" => "2",
        "BinData" => "$SendContents"
        );
    $header = "Content-Type: application/octet-stream";
    $opts = array(
        'http' => array(
            'method' => 'POST',
            'header' => $header,
            'content' => $data,//←直接"$SendContents"を入れると上手くいく
            )
        );
    // アクセスする先
    $url = "http://xxxxxxxxx/Server.php";
    file_get_contents($url, false, stream_context_create($opts));
    
[/code]

ver2のコードですと、上手く送信ができません。  
'content' => $SendContents にするとWiresharkにはバイナリデータ「FB EE FB EF」が表示されますが、POSTで
AAA=1 と BBB=2も送信したいと思っております。  
ここからどうすれば良いかご教授願いたいです。  
宜しくお願い致します。

xampp  
Apache  
php  
Wireshark

追記  
サーバーのプログラムを示します。  
echo $_POST["AAA"];  
echo $_POST["BBB"];  
echo $_POST["$data"];  
です


CC BY-SA 3.0
2016-11-24T15:48:10.000
30658
2016-11-24T23:18:57.390
2016-11-24T23:18:57.390
19213
19213
question
php
phpでアクセス先のphpにPOSTでバイナリデータを送信したいです