Javascript到PHP - 卷曲请求不返回结果

时间:2018-02-18 14:13:42

标签: javascript php

我正在尝试移植当前用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的文档,所以我试图通过反复试验来解决这个问题

2 个答案:

答案 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)
});