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

建站经验
11个PR7以上的国内网址导航站
国内现状 目前没几个博客能赚钱
网站推广最重要的2点 细节和坚持
给想通过博客赚钱的站长朋友的一些建议
网络推广经验 前期准备和发帖原则
盈利模式 细分市场是站长梦开始的地方
把握博客更新时间
总结网站推广中需要避免的12种推广方式
淘宝网店推广重点 抓住潜在的购买客户
建站杂谈 2010年web领域的预测
给用户一个无法拒绝的回访理由
建站案例 地方门户网站运营的心酸事
制作英文网站的基本流程
网站备案 图文教程
独立域名的英文博客从WordPress切换到Blogger的步骤
大胆尝试电子商务 改变传统盈利思路
404页面设计全攻略
以收购网站为名的商业间谍不可不防
运营企业网站来实现营销目标的经验
淘宝的站内搜索能改变搜索格局?

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


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