2013-04-23 55 views
0

我設法讓一個SOAP客戶端爲客戶端工作,但我現在試圖使用REST來做一個稍微不同的項目。我使用Httpful。從我讀過的內容來看,這是我所需要的,以便完成我所要求的。使用REST在PHP中使用Httpful發送XML

這是我的代碼到目前爲止。

/* 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端點。

回答

2

發送調用(在代碼中命名爲$ request)的返回值實際上是一個Httpful :: Response對象,幷包含來自http調用的響應。

嘗試echo $ request-> body;而不是回聲'發送!';

而且記得要經常寫塊如果表達式,您可以創建硬盤跳過它來尋找錯誤:)

+0

很抱歉這麼晚纔回復但工作它究竟是如何打算。謝謝! – 2013-07-29 20:57:48