当前位置: 首页 > 图文教程 > 网站运营 > 建站经验 > 如何在 WordPress 发起 HTTP Requests

建站经验
推广经验 利用QQ推广网站的方法
google 恶意软件网站 警告后 怎么办
站长浅谈 运营网站切勿盲目跟风
远离垃圾站 做一个有用的站 让人们需要你
站长想把网站做好需要专心
让百度蜘蛛认为你的网站是一个好网站
企业网站 建设目标分析
问答推广的实施步骤与问答推广方法和技巧
SEO B2B行业网站优化经验
搜索引擎算法调整和被搜索引擎惩罚的解决方法
选择不知名网站源码来建站选择技巧
digg 创始人经验分享 发展网站用户的9个方法
智能查询域名的10个国外网站
成功网站的法则 简单的直击人最基本需求
网站 邀请机制的使用说明
成功网站=充实的内容+勤奋的站长+运气
网站内容的主动组织和展示技巧
百度K站和降权原因大收集 看看你占了哪一条
网络媒体 让资讯与服务融为一体
网站运营 SNS社区产品设计思想

建站经验 中的 如何在 WordPress 发起 HTTP Requests


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 43 ::
收藏到网摘: n/a

在 PHP 中发起 HTTP 请求并不是很难,有很多种方法:使用 fopen()函数,使用 cURL 扩展,使用文件操作函数如 fsockopen() 和 fwrite()。但是问题是各种方法所依赖的服务器的配置把不同,有些服务器可能无法支持,不过 WordPress 自身开发了新的 API 使得在所有环境下都非常容易发起 HTTP Requests。

PHP 类:WP_Http

WordPress 2.7 开始引入了一个新的 PHP Class:WP_Http(在 wp-includes 目录 http.php 文件中)。这个 Class 的强大之处是它会检测服务器的情况,选择最好的方法去实现 HTTP 请求,所以我们自己无须去检测 HTTP 扩展,fopen(),是否存在 curl_init() 函数,这个 Class 都会包办这些检测。

这个 Class 的基本使用方法如下:

$request = new WP_Http;
$result = $request->request( 'http://some.url.you-need.to-fetch' );

返回的变量 $result 是一个数组,它包含以下东西:

以下为引用的内容:
  • ‘headers’: 返回的 headers 数组,如 “x-powered-by” => “PHP/5.2.1″
  • ‘body’: 返回字符串,和你使用浏览器看到一样的。
  • ‘response’: 返回代码的数组,如果获取了这个代码 (’code’=>200, ‘message’=>’OK’),说明你的 HTTP Request 成功了。
  • ‘cookies’: 返回 cookie 信息数组。
  • 下面是具体的例子:

    简单的 GET 请求

    假设你想在 Twitter 上搜索所有含有你 ID 的信息:

    $url = 'http://search.twitter.com/search.json?q=@denishua';
    $request = new WP_Http;
    $result = $request->request( $url );
    $json = $result['body'];

    接下来就是 JSON 解码的事情了。

    基本的 POST 请求

    如过你需要传递一些参数,如 nick=’denishua’ 和 mood=’happy’,可以使用 POST 方法:

    $body = array(
      
    'nick' => 'denishua',
      
    'mood' => 'happy'
    );
    $url = 'http://your.api.url/';
    $request = new WP_Http;
    $result = $request->request( $url, array( 'method' => 'POST', 'body' => $body) );
    // test $result['response'] and if OK do something with $result['body']

    需要验证的 POST 请求

    假如你需要使用 Twitter Stauts Update API 更新 Twitter,你需要首先验证你的 Twitter 账户,我们需要发送一个含有用户名和密码对的 base64 编码的字符串给 Twitter,详细如下:

    // You would edit the following:
    $username = 'denishua'; // Twitter login
    $password = '123456'; // Twitter password
    $message = "I'm posting with the API";
    // Now, the HTTP request:
    $api_url = 'http://twitter.com/statuses/update.xml';
    $body = array( 'status' => $message );
    $headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
    $request = new WP_Http;
    $result = $request->request( $api_url , array( 'method' => 'POST', 'body' => $body, 'headers' => $headers ) );

    翻译自 How To Make HTTP Requests with WordPress

    WordPress 加入 WP_Http 类之后,就放弃了 Snoopy 这个 PHP Class,所以建议大家给 WordPress 写插件的时候,尽量使用 WP_Http 来做 HTTP 请求。

    WordPress 已经可以认为是 PHP 框架了,它含有各种类和方法,并且接口和方法使用非常简单,并且文档化,所以使用 WordPress 作为 PHP 框架进行开发,或者抽取 WordPress 中的一些类进行开发会起到事半功倍的效果。

    原文:http://fairyfish.net/2009/08/22/how-to-make-http-requests-with-wordpress/