如何在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, 它还显示了缓存和解析响应的基本概念。