推特提要-无法打开流

时间:2013-01-04 作者:JonnyPlow

这是可行的,但我每次随机刷新/页面浏览次数都会收到一条无法打开的流。我也在两台不同的主机上尝试了这段代码,得到了相同的结果。我也尝试过使用cURL获得相同的结果。它不断显示file\\u get\\u内容上的错误。是否与wordpress和file\\u get\\u内容冲突?

function get_tweets($twitter_username, $tweet_count) {
if(($twitter_info = file_get_contents(\'https://api.twitter.com/1/users/show.json?screen_name=\' . $twitter_username)) === FALSE) {
    return false;
}
$twitter = array();//store all info in this array
if(($profile_info = @json_decode($twitter_info, true)) === FALSE) {
    return false;
}
$twitter[\'name\'] = $profile_info[\'name\'];

$tweets = array();

if(($tweets_json = file_get_contents(\'https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=\'.$twitter_username.\'&count=\'.$tweet_count))) {
    if(($all_tweets = @json_decode($tweets_json, true)) === FALSE) {
        return false;
    }
    foreach($all_tweets as $tw) {
        $tweets[] = array(\'tweet\'=>make_clickable_urls($tw[\'text\']), \'created_at\'=> \'about \'. time_since(strtotime($tw[\'created_at\'])) . \' ago\', \'profile_image_url\'=>$twitter[\'profile_image_url\']);
    }
}
else {
    return false;
}
$twitter[\'tweets\'] = $tweets;
return $twitter;
}

1 个回复
SO网友:kaiser

如何在WordPress中进行远程请求:首先,使用适当的APIWP HTTP API, 应将其用于此类任务。第二,永远不要使用@ 操作员,因为此操作将抑制错误消息或通知,并将成功锁定您的错误排除。仅仅因为你看不到它,并不意味着它不在那里。

如何使用API

首先要做的是提出实际的请求:

// Example
$api_url  = https://api.twitter.com/1/users/show.json?screen_name=SOME_USER_NAME\';
$response = wp_remote_get( $api_url );
然后你检查一下you got an error 并输出调试。

if ( is_wp_error( $response ) )
    return $response->get_error_message();
标题可以为您提供其他信息。这同样适用于response code 还有response message

$headers = wp_remote_retrieve_headers( $response );
$code    = wp_remote_retrieve_response_code( $response );
$message = wp_remote_retrieve_response_message( $response );
当然,大多数响应代码和消息都是谎言,而服务器只是回答而已。根据我个人的经验,远程API的编码和发送都很糟糕200/OK 错误的答案。

现在你把一切都搞定了,你终于grab the result 做任何你需要做的事情:

$data = wp_remote_retrieve_body( $response );
// BE FANTASTIC HERE!
如何调试WP HTTP请求最初实现此API的人非常聪明,在请求末尾提供了一个钩子,它可以为您提供您可以想象到的每一个详细信息。只要使用它。

add_action( \'http_api_debug\', \'wpse78251_http_api_debug\', 10, 5 );
function wpse78251_http_api_debug( $response, $type, $class, $args, $url ) {
    var_dump( \'Request URL: \' . var_export( $url, true ) );
    var_dump( \'Request Args: \' . var_export( $args, true ) );
    var_dump( \'Request Response : \' . var_export( $response, true ) );
}
有关调试这些的详细信息requests can be found on this answer I gave.

其他信息/高级和深入信息我写了另一个关于远程请求的答案for this question, 它还显示了缓存和解析响应的基本概念。

结束