Я создаю Restful WebService с CakePHP 2, однако, я получаю 500 Internal Server Error, так как я не могу захватить Post Data. Остальные сервера, как показано ниже:Restful API для CakePHP 2
App::import ('Vendor', 'ExchangeFunctions', array ('file'=> 'exchange/exchangefunctions.php'));
class ExchangeController extends AppController
{
public $components = array('RequestHandler');
public
function index()
{
$exchange = new ExchangeFunctions();
$data = $this->request->data('json_decode');
$exchange->username = $_POST['username'];
$exchange->password = $_POST['password'];
$emailList = $exchange->listEmails();
$response = new stdClass();
$response->emailList = $emailList;
foreach($emailList->messages as $listid => $email)
{
$tempEmail = $exchange->getEmailContent(
$email->Id,
$email->ChangeKey,
TRUE,
$_POST['attachmentPath']
);
$response->emails[$tempEmail['attachmentCode']] = $tempEmail;
}
$this->set('response', $response);
$this->set('_serialize','response');
}
}
и клиент идет как:
class ApitestController extends AppController
{
Public function index()
{
$this->layout = 'ajax';
$jRequestURLPrefix = 'http://localhost/EWSApi/';
$postUrl = $jRequestURLPrefix."exchange/index.json";
$postData = array(
'username' => 'username',
'password' => 'password',
'attachmentPath'=> $_SERVER['DOCUMENT_ROOT'] . $this->base . DIRECTORY_SEPARATOR . 'emailDownloads' . DIRECTORY_SEPARATOR . 'attachments'
);
$postData = json_encode($postData);
pr($postData);
$ch = curl_init($postUrl);
$options = array(
CURLOPT_RETURNTRANSFER=> true,
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Content-Length: ' . strlen($postData)
),
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_POSTFIELDS => $postData,
);
curl_setopt_array($ch, $options);
$jsonString = curl_exec($ch);
curl_close($ch);
$data = json_decode($jsonString, FALSE);
echo $jsonString;
}
}
Не уверен, где я Мессинг! Пожалуйста помоги!
«_... я получаю 500 Внутренняя ошибка сервера, так как я не могу захватить Post Data_ «Вы должны объяснить немного более подробно, где точно/что именно происходит. Единственная очевидная вещь, связанная с проблемами данных «POST», которые я вижу, заключается в том, что ваш запрос CURL использует 'GET' вместо' POST': 'CURLOPT_CUSTOMREQUEST => 'GET'' – ndm
Извините за отсутствие ясности! переменная post $ _POST ['username'] возвращается. Я попытался изменить CURLOPT_CUSTOMREQUEST => «GET» на «POST», но не повезло! Здесь я хочу сказать, что от клиента, в то время как i POST - имя пользователя, которое не доходит до остального сервера, то есть сервер остальной части не читает $ _POST – Guns