###前提・実現したいこと
Client.php → Server.php へデータをPOSTでデータを送信したいです。
送信するデータは AAA=1とBBB=2とファイルから読み込んだバイナリデータです。
その際、Wiresharkで送信データを見る時、「bina.bin(中身のバイナリはFB EE FB EFとします)と同じバイナリデータが表示されていてほしいです。formは使えません。
ver1のClient.phpのプログラムを示します。
php
1// 送信データファイル読み込み 2$SendContents = file_get_contents("C:/xampp/htdocs/bina.bin"); 3//POSTデータ 4$data = array( 5 "AAA" => "1", 6 "BBB" => "2", 7 "BinData" => $SendContents 8 ); 9$data = http_build_query($data, "", "&"); 10$header = array( 11 "Content-Type: application/x-www-form-urlencoded", 12 "Content-Length: ".strlen($data) 13); 14$context = array( 15 "http" => array( 16 "method" => "POST", 17 "header" => implode("\r\n", $header), 18 "content" => $data 19 ) 20); 21// アクセスする先 22$url = "http://xxxxxxxxx/Server.php"; 23file_get_contents($url, false, stream_context_create($context));
上記のコードでは%エンコードされているようでして、Wiresharkに「FB EE FB EF」のデータが出ませんでした。
ver2のClient.phpのプログラムを示します。
php
1$SendContents = file_get_contents("C:/xampp/htdocs/bina.bin"); 2//POSTデータ 3$data = array( 4 "AAA" => "1", 5 "BBB" => "2", 6 "BinData" => "$SendContents" 7 ); 8$header = "Content-Type: application/octet-stream"; 9$opts = array( 10 'http' => array( 11 'method' => 'POST', 12 'header' => $header, 13 'content' => $data,//←直接"$SendContents"を入れると上手くいく 14 ) 15 ); 16// アクセスする先 17$url = "http://xxxxxxxxx/Server.php"; 18file_get_contents($url, false, stream_context_create($opts));
ver2のコードですと、上手く送信ができません。
'content' => "$SendContents" にするとWiresharkにはバイナリデータ「FB EE FB EF」が表示されますが、POSTで AAA=1 と BBB=2も送信したいと思っております。
ここからどうすれば良いかご教授願いたいです。
宜しくお願い致します。
###補足情報(言語/FW/ツール等のバージョンなど)
xampp
Apache
php
Wireshark
###追記###
サーバーのプログラムを示します。
echo $_POST["AAA"];
echo $_POST["BBB"];
echo $_POST["$data"];
です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/26 04:57