我正在尝试使用PHP中的cURL发出POST请求。我有代码来发出POST请求(来自 index.php ),我相信它是正确的。
下一部分是API层( api.php ),它需要从POST请求中提取数据,这就是我遇到问题的地方。在代码中,我试图读取我使用index.php传递的参数q的值。
这是两个文件的代码。
的index.php
<?php
$handle = curl_init();
curl_setopt_array(
$handle,
array(
CURLOPT_URL => 'http://localhost:8888/restAPI/api.php',
'q' => 'getCompanyId',
'post_fields' => 'q=getCompanyId',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'q' => 'getCompanyId'
),
CURLOPT_RETURNTRANSFER => true
)
);
$response = curl_exec($handle);
curl_close($handle);
?>
api.php
<?php
require_once("Rest.inc.php");
class API extends REST {
public function processApi() {
$func = $_REQUEST['q'];
if((int)method_exists($this,$func) > 0){
$this->$func();
}
else{
$this->response('',404);
// If the method not exist with in this class, response would be "Page not found".
}
}
public function getCompanyId(){
$dbhost = 'localhost:8888';
$conn = mysql_connect($dbhost, 'root', 'root');
if (! $conn) {
die('Could not connect - ' . mysql_error());
}
$sql = 'SELECT companyId FROM Companies';
mysql_select_db('IRSocialBackend');
$executeSql = mysql_query($sql);
while($data = mysql_fetch_array($executeSql)){
echo $data['companyId'];
}
}
}
//echo "here";
$api = new API;
$api -> processApi();
?>
答案 0 :(得分:0)
请注意:您的API不是RESTFUL。 REST不是“发出HTTP请求”的问题。阅读它!
第一个错误:
array(
CURLOPT_URL => 'http://localhost:8888/restAPI/api.php',
'q' => 'getCompanyId',
'post_fields' => 'q=getCompanyId',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => array(
'q' => 'getCompanyId'
),
CURLOPT_RETURNTRANSFER => true
)
随机“q”和“post_fields”肯定不如何向curlopt添加字段。
在 api.php 中,您可以指定以下内容:
$dbhost = 'localhost:8888';
$conn = mysql_connect($dbhost, 'root', 'root');
我认为localhost:8888是你的网络服务器? localhost:3306将是你的MySQL服务器,如果它在默认端口上。
如果不知道您的表/数据库结构,其余部分很难调试。