微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

该POST请求如何工作?

如何解决该POST请求如何工作?

“将消息作为POST请求发送到Web服务。该地址必须 以“ http://”开头,并可以选择包含端口号 (认值为80)以及特定Web服务的路径。的 通知消息填充POST内容部分的正文 消息,没有key = value表单样式格式-您只需阅读 直接输入流。”

以上内容摘自Alien UHF RFID F800 manual。所提到的请求用于将读取器扫描的RFID标签发送到Web服务。域名是myrfidtest.com,路径是/insertdb.PHP。现在,将insertdb.PHP设置为接受两个参数,例如id和RFID标签号。因此,完整的URL为http://myrfidtest.com/insertdb.PHP?id=21&rfid=2eda1。然后将这些数据成功插入到我的数据库中。

因此,我了解了如何使用上述URL将数据插入到云托管的数据库中。但是,我不理解摘录,“您直接读取输入流”是什么意思?

此外,如何更改insert.PHP脚本以接受来自阅读器的标签

我的insert.PHP脚本:

<?PHP
 class data_new
 {
    public $conn='';

    function __construct($id,$rfid)
    {
       $this->storeInDB($id,$rfid);
    }

    function storeInDB($id,$rfid)
    {
       $conn = new MysqLi('localhost','user','password','db');
    
       // Check connection
       if ($conn->connect_error) 
       {
          die("Connection Failed: " . $conn->connect_error);
       }
    
       $sql = "insert into cloud set id='".$id."',rfid='".$rfid."'";
    
       if ($conn->query($sql) === TRUE) 
       {
           echo "New record created successfully";
       } 

       else 
       {
          echo "Error: " . $sql . "<br>" . $conn->error;
       }
   }
    
 }


 if($_GET['id'] != '' and $_GET['rfid'] != '')
 {
    $data_new = new data_new($_GET['id'],$_GET['rfid']);
 }

?>
    

解决方法

通常,当您在HTTP请求中发布表单数据时,您(或您的浏览器)会将发布的数据放入HTTP请求的正文中,并将其格式化为类似查询字符串的格式,例如field1=value1&field2=value2,以便接收请求的服务器可以区分字段并知道哪个值属于哪个字段。我认为这篇文章说的是,在此特定请求中,请求的整个主体只是包含通知数据的单个字段,而没有任何name = value样式格式-因为主体中只有一个参数。

在PHP中,发布的数据通常出现在$_POST数组中,数据中的每个参数在数组中都有一个条目(因此,您最终会得到$_POST["field1"]$_POST["field2"],等等。但是您也可以使用以下命令读取原始输入数据:

$postdata = file_get_contents("php://input");

相反。在上面提到的情况下,数据只是请求正文中的一大文本流,而不是被格式化的情况下,这将很有用。


P.S。我无法回答问题的第二部分”“如何更改insert.php” ,因为我不知道您指的是什么脚本,它的功能或外观,或者您在说什么标签。我建议您再问一个单独的问题,因为这听起来像是一个不同的问题,并在问题文本中给出您的意思的清晰示例。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。