我正在尝试移植当前用Javscript编写的一段代码,它有以下行...
get('http://www.example.com/api.php?key=1234&type=fruit', function(data) {
console.log(data)
})
我正在尝试在PHP中编写等效的内容并使用此...
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => 'http://www.example.com/api.php?key=1234&type=fruit',
CURLOPT_USERAGENT => 'cURL Request'
));
$resp = curl_exec($curl);
curl_close($curl);
print_r($resp);
我的PHP版本没有返回任何内容,只是空白。 Javascript版本返回结果。
我的PHP版本看起来是否正确?我没有任何关于访问API的文档,所以我试图通过反复试验来解决这个问题
答案 0 :(得分:0)
尝试使用file_get_contents()代替
$resp = file_get_contents('http://www.example.com/api.php?key=1234&type=fruit');
print_r($resp);
编辑: 也许服务器期待会话cookie所以添加一些:
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_URL => 'http://www.example.com/api.php?key=1234&type=fruit',
CURLOPT_USERAGENT => 'cURL Request'
));
curl_setopt($ch, CURLOPT_COOKIEFILE, '/tmp/cookies.txt'); // set cookie file to given file
curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt'); // set same file as cookie jar
$resp = curl_exec($curl);
curl_close($curl);
print_r($resp);
答案 1 :(得分:0)
您需要检查错误,这里是get
函数的简单实现:
<?php
function request(string $url,string $method = 'GET',array $data = [],?Closure $success=null,?Closure $fail=null): void
{
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => 'PHP Curl',
CURLOPT_POSTFIELDS => $data,
CURLOPT_CUSTOMREQUEST => $method,
]);
if($result = curl_exec($ch))
{
if($success !== null)
$success($result);
} else {
if($fail !== null)
$fail($ch);
}
curl_close($ch);
}
function get($url,$success,$fail)
{
request($url,'GET',[],$success,$fail);
}
get('http://www.example.com/api.php?key=1234&type=fruit',
function($result) {
print $result;
},
function($ch) {
print 'Error: "' . curl_error($ch) . '" - Code: ' . curl_errno($ch)
});