Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Curl-Fehler: curl__errno() gibt Fehlercode 6 zurück

PHP-Curl-Fehler: curl__errno() gibt Fehlercode 6 zurück

WBOY
WBOYOriginal
2016-12-01 00:57:016183Durchsuche

Als ich curl zum Aufrufen der Schnittstelle zum Abrufen von Daten verwendet habe, hat curl_errno() den Fehlercode '6' zurückgegeben, den Baidu nachgeschlagen hat

<code>CURLE_COULDNT_RESOLVE_HOST (6)
Couldn't resolve host. The given remote host was not resolved.</code>

Es stellt sich heraus, dass das Programm die von der Schnittstelle zurückgegebenen Daten normalerweise abrufen kann. Diese Situation ist plötzlich aufgetreten. Ich frage mich, ob die API den Aufruf einschränkt. Ich kenne die konkrete Lösung noch nicht. Wenn Sie auf die gleiche Situation stoßen, können Sie uns die Lösung mitteilen.
PS: Die Daten können direkt durch Zugriff auf die Schnittstellen-URL im Browser abgerufen werden.
Curl-Code:

<code>public function getApiDataWithCurl($params = array()){
        $doc = array(
            'result'=>0,
            'content'=>'',
        );
        if(!isset($params['feed_id'])) return $doc;
        if(!isset($params['apikey'])) return $doc;
        $getUrl = $this->apiUrl.'?';
        foreach($params as $k => $v){
            if($v != ''){
                $getUrl .=$k.'='.$v.'&';
            }
        }
        $getUrl = substr($getUrl,0,strlen($getUrl)-1);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$getUrl);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, false);
        $response_content = curl_exec($ch);
        $error_code = curl_errno($ch);
        $curl_info = curl_getinfo($ch);
        curl_close($ch);
        $response_content = simplexml_load_string($response_content);
        $json = json_encode($response_content);
        $response_content = json_decode($json,TRUE);
        if($error_code || (!$response_content && $curl_info['http_code']!=200)){
            return 'CURL ERROR: error code '.$error_code;
        }else{
            $doc = array(
                'result'=>1,
                'content'=>$response_content,
            );
            return $doc;
        }
    }</code>

Antwortinhalt:

Als ich curl zum Aufrufen der Schnittstelle zum Abrufen von Daten verwendet habe, hat curl_errno() den Fehlercode '6' zurückgegeben, den Baidu nachgeschlagen hat

<code>CURLE_COULDNT_RESOLVE_HOST (6)
Couldn't resolve host. The given remote host was not resolved.</code>

Es stellt sich heraus, dass das Programm die von der Schnittstelle zurückgegebenen Daten normalerweise abrufen kann. Diese Situation ist plötzlich aufgetreten. Ich frage mich, ob die API den Aufruf einschränkt. Ich kenne die konkrete Lösung noch nicht. Wenn Sie auf die gleiche Situation stoßen, können Sie uns die Lösung mitteilen.
PS: Die Daten können direkt durch Zugriff auf die Schnittstellen-URL im Browser abgerufen werden.
Curl-Code:

<code>public function getApiDataWithCurl($params = array()){
        $doc = array(
            'result'=>0,
            'content'=>'',
        );
        if(!isset($params['feed_id'])) return $doc;
        if(!isset($params['apikey'])) return $doc;
        $getUrl = $this->apiUrl.'?';
        foreach($params as $k => $v){
            if($v != ''){
                $getUrl .=$k.'='.$v.'&';
            }
        }
        $getUrl = substr($getUrl,0,strlen($getUrl)-1);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$getUrl);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HEADER, false);
        $response_content = curl_exec($ch);
        $error_code = curl_errno($ch);
        $curl_info = curl_getinfo($ch);
        curl_close($ch);
        $response_content = simplexml_load_string($response_content);
        $json = json_encode($response_content);
        $response_content = json_decode($json,TRUE);
        if($error_code || (!$response_content && $curl_info['http_code']!=200)){
            return 'CURL ERROR: error code '.$error_code;
        }else{
            $doc = array(
                'result'=>1,
                'content'=>$response_content,
            );
            return $doc;
        }
    }</code>

Dies liegt daran, dass der Domainname nicht aufgelöst werden kann. Geben Sie die URL ein und prüfen Sie, ob Sie sie anpingen können

Können Sie Curl posten?

Sehen Sie, das ist eine GET-Wert-Anfrage! Sie können es direkt mit file_get_content versuchen! Hat die andere Partei eine Whitelist eingerichtet

?
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn