我一直在搜索所有的stackoverflow和谷歌解決我的問題。Zend_HTTP_Client不會讓我POST任何數據
我用Zend Framework創建了兩個項目 - Project1
和Project2
- 我想在其中的一個上實現Web服務。這個想法是發送一個JSON字符串到Project1
,並使用POST接收與該變量相關的所有細節的JSON。現在,我已經創建了一個Project2
的TestController:
public function indexAction(){
$uri = 'http://project1.com/WebService/data';
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
);
$client = new Zend_Http_Client($uri, $config);
$request = $client->request('POST');
print_r($request->getBody());
exit();
}
上面的代碼工作。它從Project1
控制器中讀取dataAction
,並給出任何迴應的輸出。但是,當我試試這個:
public function indexAction(){
$uri = 'http://project1.com/WebService/data';
$config = array(
'adapter' => 'Zend_Http_Client_Adapter_Curl',
'curloptions' => array(CURLOPT_FOLLOWLOCATION => true),
);
$client = new Zend_Http_Client($uri, $config);
$data = array(
'userID' => 'TEST TEST',
'value' => 1,
'description' => 'ABCDEFG',
);
$request = $client->request('POST');
$json = json_encode($data);
$client->setRawData($json, 'application/json')->request('POST');
exit();
}
就當我嘗試內dataAction
顯示服務器端:
public function dataAction(){
var_dump($this->getRequest()->getParam('var-name'));
var_dump($_POST);
die();
}
我得到這樣的輸出:NULL陣列(0){} ....當我在客戶端嘗試時,我得到相同的輸出。另外提及..我也嘗試打開php://輸入文件,但得到了一個空字符串...
我失蹤了什麼?自上午以來,我一直在尋找它,但沒有得到解決。
在此先感謝您的回覆。
很高興能有一個快速的迴應。正如你所說我嘗試使用該代碼,但我var_dump($ json)和var(dump)($ post)與布爾(假)的NULL;我同意你的帖子json不被解析。但是當我嘗試這樣的: $ client-> setRawData($ test,'String') - > request('POST');在哪裏測試是一個字符串 它仍然給我什麼,但NULL? – 1291
不知道爲什麼它不適合你。我在代碼中添加了兩個控制器操作的完整代碼。這主要是您對請求的複製/粘貼。希望你能做到這一點。確保您使用的是最新的ZF版本1.12.0。我使用1.11.13進行了測試,它也適用於該版本。 – drew010
顯然我沒有正確地發送數據...這是我改變了:$ data = array('num'=>'1234'); $ dataString =「」; ...在服務器端我做到了這一點:$ this-> request-> getParam('num')$ this-> json-> sendData($ data); ..現在它工作:)! 感謝您的幫助!欣賞它! – 1291