file_get_contents throws 400 Bad Request error PHP

后端 未结 3 1763
攒了一身酷
攒了一身酷 2020-12-03 13:24

I\'m just using a file_get_contents() to get the latest tweets from a user like this:

$tweet = json_decode(file_get_contents(\'http://api.twitte         


        
相关标签:
3条回答
  • 2020-12-03 13:49

    You might want to try using curl to retrieve the data instead of file_get_contents. curl has better support for error handling:

    // make request
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://api.twitter.com/1/statuses/user_timeline/User.json"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch);   
    
    // convert response
    $output = json_decode($output);
    
    // handle error; error output
    if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
    
      var_dump($output);
    }
    
    curl_close($ch);
    

    This may give you a better idea why you're receiving the error. A common error is hitting the rate limit on your server.

    0 讨论(0)
  • 2020-12-03 13:58

    You can use file_get_contents adding the ignore_errors option set to true, in this way you will get the entire body of the response in case of error (HTTP/1.1 400, for example) and not only a simple false.

    You can see an example here: https://stackoverflow.com/a/11479968/3926617

    If you want access to response's headers, you can use $http_response_header after the request.

    http://php.net/manual/en/reserved.variables.httpresponseheader.php

    0 讨论(0)
  • 2020-12-03 13:59

    Just a little addendum on Ben's answer. According to the PHP manual the CURLOPT_URL option may be set when inizializing the cURL handle with curl_init().

    // make request
    $ch = curl_init("http://api.twitter.com/1/statuses/user_timeline/User.json");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch);   
    
    // convert response
    $output = json_decode($output);
    
    // handle error; error output
    if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {
    
      var_dump($output);
    }
    
    curl_close($ch);
    
    0 讨论(0)
提交回复
热议问题