PHP Curl结果给出了麻烦?

时间:2017-02-19 20:09:27

标签: php curl

我正在使用NCBI Blast api。我创建了逻辑以获得xml格式的结果,但结果是以html格式提交,这个结果再次返回重定向以显示xml格式。当我在浏览器中检查原始URL时,它会显示直接的xml数据。任何人都可以给我解决方案。 访问此网址即可找到我的问题peerscientist.net。这是代码。

enter image description here     

class BlastAPI{

    public function blastdata(){

        $url = "https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Put&QUERY=SSWWAHVEMGPPDPILGVTEAYKRDTNSKK&PROGRAM=blastp&FILTER=L&DATABASE=nr&FORMAT_TYPE=XML";
        $ncontent = $this->rid($url);
        echo '<br/>RID :'.$ncontent.'<br/>';
        $geturl = $this->geturl($ncontent);
        echo $geturl;
        $fulldata = $this->getfullData($geturl);
        if($fulldata != ''){
            echo '<pre>';
            var_dump($fulldata);
            echo '</pre>';
        }else{
            echo "Code Once";
        }
    }

    public function rid($url){

        $surl = $url;
        echo $surl;
        //header('Content-type: text/html');
        $content = file_get_contents($surl);    
        $doc = new DOMDocument();
        libxml_use_internal_errors(true);
        $doc->loadHtml($content);
        libxml_use_internal_errors(false);

        $data = $doc->getElementById("rid");
        $rid = $data->getAttribute('value');

        return $rid;
    }
    public function geturl($rid){
        $srid = $rid;
        $mainurl = "https://blast.ncbi.nlm.nih.gov/Blast.cgi?CMD=Get&RID=$srid&FORMAT_TYPE=XML&DESCRIPTIONS=200&ALIGNMENTS=200&NOHEADER=true";
        return $mainurl;
    }
    public function getfullData($url){
        $murl = $url;
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $murl);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  
        $str = curl_exec($curl);
        curl_close($curl);
        if ($str === FALSE) {

            echo "cURL Error: " . curl_error($curl);

        }
        return $str;
    }
}
$nblast = new BlastAPI();
$nblast->blastdata();

0 个答案:

没有答案