Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Curl-Fehler: curl__errno() gibt Fehlercode 6 zurück
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>
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