如何解决PHP发布到REST Web服务
| 我是REST Web服务的新手。我需要使用php将一些信息发布到REST Web服务,并使用响应为用户提供产品(响应是该产品的代码)。我的任务: 1)HTTP方法是发布 2)请求主体是XML 3)标头需要具有API密钥,例如:some-co-APIkey:4325hlkjh 4)响应是xml,需要进行解析。 我的主要问题是如何设置标题,使其包含密钥,如何设置正文以及如何获取响应。我不确定从哪里开始。我敢肯定它很简单,但是由于我从未见过,所以我不确定该如何处理。如果有人可以给我看一个例子,那会很好。在此先感谢您提供的所有帮助。 我在想这样的事情; $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);
这看起来是否正确?
解决方法
您应该为此使用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,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。
, 如果您可以安装/拥有访问cURL的权限,它将执行您想要的操作:
cURL手册:
http://php.net/manual/zh/book.curl.php
例子:
http://php.net/manual/zh/curl.examples.php
还有一个XML解析器:
http://php.net/manual/zh/book.xml.php
, 只需查看PHP手册,了解如何执行HTTP请求并阅读响应。 HTTP上下文选项和参数对于您想要实现的目标很有用。
如果您需要有关如何发出HTTP POST请求的一般教程,则可以在这里找到更长的篇幅:来自PHP的HTTP POST,无cURL。它也具有通用的REST帮助器,因此它可能正是您要寻找的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。