使用REST在PHP中使用Httpful发送XML

时间:2013-04-23 22:25:54

标签: php rest httpful

我设法让一个SOAP客户端为客户端工作,但我现在正尝试将REST用于稍微不同的项目。我正在使用Httpful。从我所看到的,我需要的是为了做我被问过的事情。

到目前为止,这是我的代码。

/* MAIN RESTFUL */

$xml_file = './Project.xml';
$xsd_file = './Project.xsd';
$end_uri = 'https://****.com/Service.svc/CreateProject';

/* TEMP TEXTAREA FIELD */

if(!isset($_POST['submit']))
    $_xml = file_get_contents($xml_file);
else
    $_xml = $_POST['xml_input'];

echo '<form method="post" action=""><textarea name="xml_input" rows="10" cols="100">' . $_xml . '</textarea><br /><input type="submit" name="submit" value="Send"></form><br /><a href="./">Reset Form</a><br /><br />';

/* END TEMP TEXTAREA FIELD */

if(isset($_POST['submit']))
    $xml_file = $_POST['xml_input'];

if(isset($_POST['submit']))
{
    $xsd_validate = new DOMDocument();
    $xsd_validate->loadXML($xml_file);

    if($xsd_validate->schemaValidate($xsd_file))
        $sendXML = true;

    if($sendXML == true)
    {
        require('./httpful-master/bootstrap.php');

        $request = \Httpful\Request::post($end_uri)
            ->body($xml_file)
            ->sendsXml()
            ->send();

        if($request)
            echo 'SENT!';
    }
}

我正在与之合作的人对REST的了解并不多,但显然有一种方法可以从发送的请求中检索响应。有谁知道,或者至少可以指出我正确的方向来解决这个问题?

感谢。

编辑:对不起,只是详细说明。 XML被放入textarea字段,然后根据XSD文件进行验证。如果成功,则会将该XML发布到REST端点。

1 个答案:

答案 0 :(得分:2)

发送调用的返回值(代码中名为$ request)实际上是一个Httpful :: Response对象,包含来自http-call的响应。

尝试echo $ request-&gt; body;而不是echo'SENT!';

并且记得总是为if-expressions编写块,你可以通过跳过它来创建很难找到bug:)