[英]Problems processing HTTP POST
我已经使用PHP多年了,已经设置了许多HTML表单,然后再由另一个php页面处理这些表单,以将记录插入数据库,并将POST参数设置为各个字段。
我现在正在使用一个新的Web服务,该服务正在将数据发布到我们的PHP页面之一,但我们无法解析出POST参数。 我设置了一个测试html表单来模仿POST,并且可以成功运行。
我一直在浏览IIS日志(服务器是运行IIS 7.5和PHP 5.3.8的Windows Server 2008 R2 Standard Edition),并安装了Microsoft Network Monitor来捕获有关POST数据的详细信息。 以下摘录显示了Web服务和HTML表单的有效负载详细信息:
Web服务:-IIS日志中的客户端显示为:Apache-HttpClient / 4.0.1 +(java + 1.5)
我的HTML表单:
在PHP页面中,我们使用了一系列:
if(isset($_POST['inReplyToId']) && $_POST['inReplyToId'] !== '' ) {
$request->setField('ReplyToID', $_POST['inReplyToId']);
}
获取POST值并将其设置为字段,这是在数据库中创建新记录的一部分。 当Web服务执行POST时,不会在字段中设置任何POST值-会创建记录,但字段值为空。
当我们执行完整的html表单时,一切都会按预期进行。
我不确定下一步如何解决此问题-我可以看到不同的HttpContentType和有效负载的不同结构,但不确定这是否是问题以及需要采取的措施。
最后使用file_get_contents('php:// input')允许我查看POST数据。 然后,我可以使用parse_str()从字符串生成变量:
$postText = file_get_contents('php://input');
parse_str($postText);
if(isset($inReplyToId) && $inReplyToId !== '' ) {
$request->setField('_kf_GatewayMessageID', $inReplyToId);
}
等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.