2013-05-20 13 views
8

Come posso rilevare questo errore usando php curl? arricciare il successo di ritorno anche se l'URL non esiste.Come posso rilevare l'errore URL non trovato in php curl?

Not Found 
The requested URL /foo/index.php/items/edit was not found on this server. 

Il mio codice

$post_fields = array('info' => json_encode($fields)); 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_POST,count($post_fields)); 
    curl_setopt($ch,CURLOPT_POSTFIELDS,$post_fields); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
    curl_setopt($ch,CURLINFO_CONTENT_TYPE,'application/x-www-form-urlencoded charset=utf-8'); 

    $result = curl_exec($ch); 
    echo $result; 

    if(curl_error($ch)){ 
     $result = curl_error($ch); 
     curl_close($ch); 
     return $result; 
    }else{ 
     curl_close($ch); 
     return json_decode($result,true); 

    } 
+4

$ HTTP_STATUS = curl_getinfo ($ ch, CURLINFO_HTTP_CODE); controlla se è 404 o qualcos'altro che non trova l'url –

+0

restituito un errore 404, quindi dovresti controllare le intestazioni della risposta. – MatRt

risposta

9

uso questo per ottenere il codice di stato HTTP:

$code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

Se 404, significa che l'URL della richiesta non può essere trovato.

Nota: ricordarsi di rilasciare questa linea prima curl_close($ch);

+0

funziona grazie ... ma posso asserire che tutti i codici di stato diversi da 200 sono guasti? – Harikrishnan

+1

Sì, ma dovresti esaminare le risposte del server anche a te. 200 indica solo che la richiesta ha esito positivo. – Raptor