cURL没有返回JSON文件

时间:2011-09-20 20:24:03

标签: php json curl

我有一个使用cURL的PHP​​脚本,我想用它从远程服务器检索json文件。要访问json文件/ REST系统,您需要使用authenticntatication。基本上,我可以让它登录和存储cookie。但是当我尝试抓住json页面并回显它时,它会返回“找不到会话”。这是我的代码:

function login($url,$data) {
    $fp = fopen("cookie.txt", "w");
    fclose($fp);
    $login = curl_init();
    curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($login, CURLOPT_TIMEOUT, 10000);
    curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($login, CURLOPT_URL, $url);
    curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($login, CURLOPT_POST, TRUE);
    curl_setopt($login, CURLOPT_POSTFIELDS, $data);
   // ob_start();
    return curl_exec ($login);
   // ob_end_clean();
    curl_close ($login);
    //unset($login);
}

function grab_page($site){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_TIMEOUT, 40);
    curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($ch, CURLOPT_URL, $site);
    //ob_start();
    echo curl_exec ($ch);
    //ob_end_clean();
    curl_close ($ch);
}

// Login and retrieve the my meteor page

login('https://www.mymeteor.ie','username=username-removed9&userpass=pass-removed');
echo grab_page('https://www.mymeteor.ie/cfusion/meteor/Meteor_REST/service/prepayBalance');

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:6)

CURLOPT_COOKIEJAR是请求后放置cookie的地方 - 存储在那里供以后使用。

当发送cookie和请求时,请使用CURLOPT_COOKIEFILE指定要发送的cookie。

您的grab_page()函数需要使用后一个选项,而不是(或者,如果您需要在响应中存储任何Cookie以供日后使用)CURLOPT_COOKIEJAR