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

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

WBOY
Freigeben: 2023-03-02 08:30:02
Original
6306 Leute haben es durchsucht

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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>
Nach dem Login kopieren
Nach dem Login kopieren

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

?
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage