使用特定端口上的curl调用API

时间:2019-02-18 10:55:11

标签: php symfony curl fosrestbundle

我在8000端口下运行Symfony。 但是curl HTTP在端口80上。

这意味着我的curl请求无法正常工作,因为我认为端口不正常。

我尝试指定要卷曲的端口。但这会使呼叫请求失败...我没有错误消息,就像我尝试呼叫它时挂起一样。

我已经检查了以下问题:Unable to make php curl request with port number

我的$ url像http://127.0.0.1/app_dev.php/api/someapi

此处$result = $this->lib->CallAPI('POST', $url, $postfields);

在Symfony下运行以查找URL,我应该有127.0.0.1:8000 但是我要么尝试在URL中设置端口,而未设置端口的curl选项。我尝试使用不带端口的URL,但为端口设置curl选项。总是失败。

这里是拨打电话的功能

function CallAPI($method, $url, $data = false)
{
    $curl = curl_init();

    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);

            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    curl_setopt($curl,CURLOPT_PORT, 8000);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($curl);

    curl_close($curl);

    return $result;
}

}

curl_setopt($curl,CURLOPT_PORT, 8000);行似乎是导致我的请求待处理的原因。

请注意,来自Postman的API调用正在运行,因此问题确实出在我用curl调用的方式上。

感谢您的帮助。

编辑:

我用了一些小技巧来找出问题所在。

我返回$ curl而不是在callApi()中返回$ result。它在其中返回了一些HTML

<h1 class="break-long-words exception-message">Whoops, looks like something went wrong.</h1>
<p class="break-long-words trace-message">An instance of Symfony\Bundle\FrameworkBundle\Templating\EngineInterface must be injected in FOS\RestBundle\View\ViewHandler to render templates.</p>

但是我不明白,考虑到被调用的API正在邮递员上工作,为什么定义$ curl变量会导致此错误

EDIT2:实际上,此错误是由于尝试使用json_decode转换json中的curl对象而导致的。抱歉。那时,问题仍然存在。

0 个答案:

没有答案