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

建站经验
评价网站推广的效果的方法
中国流量巨大的10种类型的商业网站
轻松快速打造PR5的网站
新手需要了解的网站建设的过程和步骤
推广个人博客最好办法 免费书签收藏代码
能坚持下来的站长让痛苦来的更猛烈些吧
博客首页该如何布局才能吸引与留住人
用户需求网站目标涉及行业盈利模式决定你做什么
建站流程应该是边修改边上线 推荐
建站经验谈 豆瓣网怎么推广的
GOOGLE在中国市场落后的5点原因分析
地方分类信息网站的有效推广方法小结
跟Alexa类似的网站流量跟踪的5个国外网站
网站建设与SEO的流程图
关于解决网站内容复制几点建议 强烈推荐
开心网转帖功能 网站推广经验
Site 网站首页不在第一页的原因及解决方法
解决首页不在第一页的问题的方法参考
网站推广 如何招兼职网络推广员
网站用户体验与公交车的用户体验

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-17   浏览: 44 ::
收藏到网摘: 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/