代码之家  ›  专栏  ›  技术社区  ›  netrox

对于REST,我如何使用PHP接收发布的数据?

  •  0
  • netrox  · 技术社区  · 14 年前

    我想使用PHP为我的web服务设置一个小型RESTful接口。问题是,我查看了框架,但不知道如何在没有字段名的情况下接收发布的数据?

    例如,如果一个服务器将数据发布到我的服务器,我就不知道如何在不需要postfield(POST变量)的情况下获取数据。传统上,使用表单,人们发送带有字段名称的邮件数据,例如:

     curl_setopt($ch, CURLOPT_POSTFIELDS, postfield=postvalue);
    

    我会使用这样的PHP代码:

     $postvalue=$_POST[postfield];
    

    以获取postfield的值,但由于服务器发布数据时不使用postfield,而只是发送XML,因此如何在没有字段的情况下获取它?如何捕获XML?那就是我迷失的地方。

    5 回复  |  直到 14 年前
        1
  •  2
  •   Baba    14 年前

    @网络盒

    • 对REST服务使用application/x-www-urlencoded是完全有效的
    • 您可以读取任何类型的POST数据,如下所示:

      $data = file_get_contents('php://input');
      

    如果您的服务接受JSON格式,您可以解码并使用它:

    $json = json_decode($data);
    
        2
  •  0
  •   Tom van der Woerdt    14 年前
    file_get_contents('php://input');
    

    这给了你客户发送的原始正文

        3
  •  -1
  •   Marcin Orlowski    14 年前

    通常,您可以使用GET或POST将数据传递到服务器。根据你的API应该做什么,你必须选择一个。但每个条目都应该有一个密钥,因为它更容易实现和使用。以强制顺序传递不带密钥的数据(以使代码知道在哪里是什么)很容易出错。

        4
  •  -2
  •   Samuel    14 年前

    每个post变量都有一个名称。它来自哪里并不重要。如果他们正在发送XML,则该XML数据有一个名称,您可以使用$_POST来获取XML数据。一旦获得XML数据,就可以使用 XML parser 。

        5
  •  -2
  •   pl4g4    14 年前

    你可以试试这个

    <xml>
    <item>
     <something>value</something>
    </item>
    </xml>
    

    既然你得到了xml。。。我认为现在从curl中获得文本,并使用这个从中获得值

    $whatineed = $curlValue->item->something;
    
    推荐文章