错误406在Delphi上使用idHTTP不可接受

时间:2017-10-06 22:46:26

标签: php xml delphi upload http-status-code-406

我在这里遇到了一个问题。

我需要使用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 := '*';

但没有成功!

0 个答案:

没有答案