phpでfopenを実行しようとして問題が発生しました。約300kbのデータセットをジェネリックハンドラー(.ashxファイル)に送信しています。.NetまたはPHP側のソリューションを歓迎します。送信に使用しているコード:
function DoPostRequest($url, $data, $optional_headers = null)
{
$params = array('http' => array('method' => 'POST', 'content' => $data, 'header' => "Content-type: application/x-www-form-urlencoded\r\n" .
"Content-Length: " . strlen ( $data ) . "\r\n"));
if($optional_headers != null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
try {
ini_set ('user_agent', $_SERVER['HTTP_USER_AGENT']);
$fp = fopen($url, 'rb', false, $ctx);
$response = stream_get_contents($fp);
} catch (Exception $e) {
echo 'Exception: '.$e->getMessage();
}
return $response;
}
これは、.Netを実行しているWebサーバーに接続します。問題は、リクエストが開始されると、.NetサーバーがHTTP 1.1 /100Continue応答を送信することです。送信されるデータセットが小さい場合はすべて正常に機能しますが、ファイルサイズが大きいため、.NetFrameworkによってContinueが自動的に挿入されると思います。
でC#コードを設定してみました
System.Net.ServicePointManager.Expect100Continue = false;
また、Web.configファイルを次のように変更しました。
<system.net>
<settings>
<servicePointManager expect100Continue="false" />
</settings>
</system.net>
しかし、これはどれもうまくいきませんでした。したがって、PHP側で実行したいと思います。バニラPHPインストール(cURLがインストールされていない)を使用していますが、fopenに100の継続を無視または期待させる方法はありますか?
編集:与えられた完全なエラーコード:
警告:fopen(http:// localhost:59396 / Testing.ashx)[function.fopen]:ストリームを開くことができませんでした:HTTPリクエストが失敗しました!HTTP / 1.1 100 72行目のC:\ xampp \ htdocs \ Prototype\Testing.phpに進みます