0

我正在尝试在 PHP 中使用 cURL 发出 POST 请求。我有发出 POST 请求的代码(来自index.php),我相信它是正确的。

下一部分是 API 层(api.php),它需要从 POST 请求中提取数据,这就是我遇到问题的地方。在代码中,我试图读取使用 index.php 传递的参数 q 的值。

这是这两个文件的代码。

索引.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();
?>
4

1 回答 1

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 服务器。

在不知道您的表/数据库结构的情况下,其余部分很难调试。

于 2013-05-23T02:04:59.123 回答