繁体   English   中英

处理HTTP POST时出现问题

[英]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)

  • 有效负载:HttpContentType = NetmonNull HTTPPayloadLine:inReplyToId = MG1133&to = 61477751386&body = Test&from = 61477751386&messageId = 166652576&rateCode =

我的HTML表单:

  • 有效内容:HttpContentType =应用程序/ x-www-form-urlencoded inReplyToId:MG1133至:61477751386正文:测试自:61477751386 messageId:166594397

在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM