我在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对象而导致的。抱歉。那时,问题仍然存在。