如何使用身份验证登录获取JSON API

时间:2020-04-01 19:22:07

标签: php curl

我是编程的初学者,我想问一下我发现的障碍。

在这里,我想卷曲一个站点以获取JSON API。 但是在获取API之前,我必须先登录。

以下是我使用的PHP脚本。

<?php

    $user_agent       = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0";
    $curl_crack = curl_init();
    CURL_SETOPT($curl_crack,CURLOPT_URL,"https://data.kemkes.go.id/data/dhis-web-commons-security/login.action");
    CURL_SETOPT($curl_crack,CURLOPT_USERAGENT,$user_agent);
    CURL_SETOPT($curl_crack,CURLOPT_POST,True);
    CURL_SETOPT($curl_crack,CURLOPT_POSTFIELDS,"j_username=ss&j_password=ss%&2fa_code=");
    CURL_SETOPT($curl_crack,CURLOPT_RETURNTRANSFER,True);
    CURL_SETOPT($curl_crack,CURLOPT_FOLLOWLOCATION,True);
    CURL_SETOPT($curl_crack,CURLOPT_COOKIEFILE,"cookie.txt"); //Put the full path of the cookie file if you want it to write on it
    CURL_SETOPT($curl_crack,CURLOPT_CONNECTTIMEOUT,30);
    CURL_SETOPT($curl_crack,CURLOPT_TIMEOUT,30);  
    $exec = curl_exec($curl_crack);
    if(preg_match("/^Dashboard$/i",$exec))
{
    echo "Logged in! now lets go to other page while we are logged in, shall we?";
    CURL_SETOPT($curl_crack, CURLOPT_URL, "https://data.kemkes.go.id/data/api/analytics.json?dimension=dx:TAqRuO1R1eI;U7BaEXUa1Ii;UEBmmFH8OzT&dimension=pe:20200302;20200303;20200304;20200305;20200306;20200307;20200308;20200309;20200310;20200311;LAST_7_DAYS;TODAY&filter=ou:amZZzlibrMp&skipData=false&skipMeta=false&includeNumDen=false&displayProperty=SHORTNAME");
    $exec = curl_exec($curl_crack);
    print_r($exec);exit();


curl_close($curl_crack);
}
?>

我的cookie.txt文件是:

JSESSIONID=7D1E047AB7DFCAB90617DB

当我使用print_r命令时,它什么也不输出。

https://i.stack.imgur.com/f50Ou.png

此代码在哪里出问题? 谢谢,很高兴认识你。

0 个答案:

没有答案