PHP发布到REST Web服务

问题描述:

我完全不熟悉REST Web服务。我需要使用php将一些信息发布到REST Web服务,并使用响应为用户提供产品(响应是产品的代码)。我的任务: 1)HTTP方法是post 2)请求正文是XML 3)头部需要有一个API密钥ex:some-co-APIkey:4325hlkjh 4)响应是xml,需要解析。 我的主要问题是如何设置标题,以便它包含密钥,如何设置正文,以及如何获得响应。我不确定从哪里开始。我相信这很简单,但由于我从来没有见过它,我不知道如何处理这个问题。如果有人能给我看一个很棒的例子。预先感谢任何和所有帮助。PHP发布到REST Web服务

我在想这样的事情;

$url = 'webservice.somesite.com'; 

    $xml = '<?xml version="1.0" encoding="UTF-8"?> 
     <codes sku="5555-55" />'; 
    $apiKey = '12345'; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 

    ## For xml, change the content-type. 
    curl_setopt ($ch, CURLOPT_HTTPHEADER, $apiKey); 

    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // ask for results to be returned 
    if(CurlHelper::checkHttpsURL($url)) { 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    } 

    // Send to remote and return data to caller. 
    $result = curl_exec($ch); 
    curl_close($ch); 

这似乎是正确的吗?

+0

这是一个很好的开始..运行代码并告诉我们是否有错误。 – babonk 2011-06-14 20:48:35

您应该为此使用cURL。你应该阅读文档,但这是我写的一个功能,可以帮助你。修改它为你的目的

function curl_request($url, $postdata = false) //single custom cURL request. 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_HEADER, TRUE); 
    curl_setopt($ch, CURLINFO_HEADER_OUT, true); 
    curl_setopt($ch, CURLOPT_VERBOSE, true); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  

    curl_setopt($ch, CURLOPT_URL, $url); 

    if ($postdata) 
    { 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); 
    } 

    $response = curl_exec($ch); 

    curl_close($ch); 

    return $response; 
} 

至于XML,PHP有一些很棒的功能来解析它。检查出simplexml

+0

您可以使用curl发送请求,然后读取xml响应 – babonk 2011-06-14 01:49:05

如果你可以安装/访问卷曲它会做你想要什么:

卷曲手册: http://php.net/manual/en/book.curl.php

例子: http://php.net/manual/en/curl.examples.php

和一个XML解析器: http://php.net/manual/en/book.xml.php

只需检查PHP手册如何执行HTTP request并阅读回复。 HTTP context options and parameters对你想达到的目标很有用。

如果您需要关于如何创建HTTP POST请求的通用教程,请在此处找到更长的教程:HTTP POST from PHP, without cURL。它也有一个通用REST帮助程序,因此它可能正是您要查找的内容。