尝试在 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 / 100 Continue 响应。在发送较小的数据集时一切正常,但我假设由于文件大小很大,.Net Framework 会自动放入 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 中继续