我在这里遇到了一个问题。
我需要使用PHP脚本将数据从Delphi App(或服务)上传到网站。我尝试了 IdHTTP.Post 方法,但始终收到 HTTP / 1.1 406 Not Acceptable 响应。我真的不知道是否是服务器端错误或客户端错误。
我正在尝试的Delphi代码是:
procedure TMain_UploadTest.btTryPostClick(Sender: TObject);
var
PostData: TIdMultipartFormDataStream;
begin
PostData := TIdMultipartFormDataStream.Create;
try
PostData.AddFile('file', 'simple.xml', 'application/xml');
idhttp1.Post('http://' + edServer.Text + '/quick_import.php', PostData)
finally
PostData.Free;
end;
end;
和PHP脚本是这样的:
<?php
//quick_import.php
sleep(3);
$output = '';
if(isset($_FILES['file']['name']) && $_FILES['file']['name'] != '')
{
$valid_extension = array('xml');
$file_data = explode('.', $_FILES['file']['name']);
$file_extension = end($file_data);
if(in_array($file_extension, $valid_extension))
{
$file_name = "uploads/xmlfile" . date("YmdHis") . ".xml";
$inp = fopen($_FILES['file']['tmp_name'], "r");
$outp = fopen($file_name, "w");
while (!feof($inp)) {
$buffer = fread($inp, 8192);
fwrite($outp, $buffer);
}
fclose($inp);
fclose($outp);
}
}
?>
但在在线服务器时始终收到 HTTP / 1.1 406不可接受响应。
我的 localhost 版本运行正常!
我的最后一次机会是通过FTP上传文件并在此之后调用PHP脚本,但我对此解决方案不满意...已经多次尝试主机支持聊天,但没有成功!< / p>
任何人都可以帮我解决这个HTTP 406错误的解决方法吗?
接受任何方法!
Delphi客户端和 PHP服务器是此工作的唯一先决条件。
提前致谢!
我已经尝试过所有这些行代码,单独使用,组合等等......没有成功!
IdHTTP1.Request.CustomHeaders.Clear;
IdHTTP1.Request.Clear;
//IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
IdHTTP1.Request.ContentEncoding := 'multipart/form-data';
idhttp1.Request.AcceptEncoding := '*';
IdHTTP1.Request.Accept := 'text/html';
IdHTTP1.Request.ContentType := 'multipart/form-data';
//IdHTTP1.Request.AcceptCharset := 'UTF-8';
IdHTTP1.Request.AcceptEncoding:= '*';//'*';
idhttp1.Request.AcceptCharset := 'iso-8859-1';
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Android 4.4; Mobile; rv:41.0) Gecko/41.0 Firefox/41.0';
之间
PostData.AddFile('file', 'simple.xml', 'application/xml');
和
idhttp1.Post('http://' + edServer.Text + '/quick_import.php', PostData)
工作 localhost 服务器的IdHTTP1.Request.RawHeaders.Text
是:
连接:保持活力
内容类型:multipart / form-data; boundary = -------- 100617210443541
内容长度:1273
主持人:192.168.15.11
接受:text / html, /
User-Agent:Mozilla / 3.0(兼容; Indy Library)
工作 localhost 服务器的IdHTTP1.Response.RawHeaders.Text
是:
日期:星期六,2017年10月7日00:04:40 GMT
服务器:Apache / 2.2.29(Unix)DAV / 2 PHP / 5.4.45 mod_ssl / 2.2.29
的OpenSSL / 0.9.8zg
X-Powered-By:PHP / 5.4.45
内容长度:582
保持活跃:超时= 5,最大= 100
连接:Keep-Alive
内容类型:text / html
最后在线服务器的IdHTTP1.Response.RawHeaders.Text
为:
服务器:nginx / 1.12.1
日期:2017年10月7日星期六00:07:32 GMT
Content-Type:text / html;字符集= ISO-8859-1
内容长度:226
连接:保持活力
在线服务器的IdHTTP1.Request.RawHeaders.Text
以及注释以上的所有修饰符代码为:
连接:保持活力
内容类型:multipart / form-data;边界= -------- 100617211049477
内容长度:1273
主持人:www.hostgatorserver.com.br
接受:text / html, /
User-Agent:Mozilla / 3.0(兼容; Indy Library)
使用时:
IdHTTP1.Request.CustomHeaders.Clear;
IdHTTP1.Request.Clear;
idhttp1.Request.AcceptEncoding := '*';
IdHTTP1.Request.Accept := 'text/html';
IdHTTP1.Request.ContentType := 'multipart/form-data';
IdHTTP1.Request.AcceptEncoding:= '*';//'*';
在线服务器的IdHTTP1.Request.RawHeaders.Text
为:
连接:保持活力
内容类型:multipart / form-data;边界= -------- 100617211635196
内容长度:1273
主持人:online.hostgatorserver.com.br
接受:text / html
接受编码:*
User-Agent:Mozilla / 3.0(兼容; Indy Library)
尝试
idhttp1.Request.AcceptEncoding := '*';
但没有成功!