在中国互联网中,BAT作为中国互联网的三座大山,很多创业者或者初创公司都表示BAT掌握着中国互联网的80%资源,面对着这种生态级的巨头的触角延伸,他们成功的机会能有多大呢!确实无可否认,BAT玩的现在都是生态,是触及到各个方面的,他们不断地投资或者并购初创企业,或者一些独角兽,说到底他们即是在相互竞争,也是在防守。他们的这个生态体量级,是他们十几年来的技术,文化,商业模式,以及政策,社会发展到一定时期的产物。BAT更多的是在移动互联网浪潮中引领者整个中国互联网的发展,因为创业公司或者独角兽很多的资本,人才,大部分还是来自BAT系,他们三者现在除了核心的业务自己掌握,其他的很多生态业务更多的是以投资或者合作伙伴的方式共存。
百度的核心业务除了搜索,现在是从人连接信息过度到人连接服务,目前还有o2o,百度金融,押注无人驾驶,人工智能,大数据。
阿里已经不但是一家电商企业,在金融,大娱乐文化,云计算,大数据,人工智能等已经是全面开花了。
这个方法是创建request的实例,然后执行链试操作方法,最后返回一个响应对象$response
具体的方法可以认真看看yii\httpclient\Request类、yii\httpclient\Message类、yii\httpclient\Response类
(2)单独使用client类,比较适合用于restful的请求
百度的核心业务除了搜索,现在是从人连接信息过度到人连接服务,目前还有o2o,百度金融,押注无人驾驶,人工智能,大数据。
阿里已经不但是一家电商企业,在金融,大娱乐文化,云计算,大数据,人工智能等已经是全面开花了。
腾讯的定位为“社交”,“连接器”,通过qq,微信两大移动应用,完善的用户账号体系,以游戏,广告,媒体,大数据,泛娱乐等触及到生活各个方面。
httpclients的本版本是2.0.1,此次最大的改进是在 HTTP 请求时加入了 beforeSend 和 afterSend 监听事件:
use yii\httpclient\Client;
use yii\httpclient\Request;
use yii\httpclient\RequestEvent;
$client = new Client();
$request = $client->createRequest()
->setMethod('get')
->setUrl('http://api.domain.com')
->setData(['param' => 'value']);
// 发送前触发事件
$request->on(Request::EVENT_BEFORE_SEND, function (RequestEvent $event) {
$data = $event->request->getData();
$signature = md5(http_build_query($data));
$data['signature'] = $signature;
$event->request->setData($data);
});
// 发送后响应数据
$request->on(Request::EVENT_AFTER_SEND, function (RequestEvent $event) {
$data = $event->response->getData();
$data['content'] = base64_decode($data['encoded_content']);
$event->response->setData($data);
});
//发送
$response = $request->send();
(1)一些基本用法
use yii\httpclient\Client;
$client = new Client();
$response = $client->createRequest()
->setMethod('post')
->setUrl('http://example.com/api/1.0/users')
->setData(['name' => 'John Doe', 'email' => 'johndoe@example.com'])
->send();
if ($response->isOk) {
$newUserId = $response->data['id'];
}
$client->createRequest()
这个方法是创建request的实例,然后执行链试操作方法,最后返回一个响应对象$response
具体的方法可以认真看看yii\httpclient\Request类、yii\httpclient\Message类、yii\httpclient\Response类
(2)单独使用client类,比较适合用于restful的请求
use yii\httpclient\Client;
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
$newUserResponse = $client->post('users', ['name' => 'John Doe', 'email' => 'johndoe@example.com'])->send();
$articleResponse = $client->get('articles', ['name' => 'Yii 2.0'])->send();
$client->post('subscriptions', ['user_id' => $newUserResponse->data['id'], 'article_id' => $articleResponse->data['id']])->send();
这个yii\httpclient\Client类定义了http的基本方法,可以具体看看,它定义一个基本的url.
(3)设置返回对象的内容格式
yii\httpclient\Client::FORMAT_JSON - JSON format
yii\httpclient\Client::FORMAT_URLENCODED - urlencoded by RFC1738 query string
yii\httpclient\Client::FORMAT_RAW_URLENCODED - urlencoded by PHP_QUERY_RFC3986 query string
yii\httpclient\Client::FORMAT_XML - XML format
use yii\httpclient\Client;
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
$response = $client->createRequest()
->setFormat(Client::FORMAT_JSON)
->setUrl('articles/search')
->setData([
'query_string' => 'Yii',
'filter' => [
'date' => ['>' => '2015-08-01']
],
])
->send();
那么我们可以获取内容:
$responseData = $response->getData(); // get all articles
count($response->data) // count articles
$article = $response->data[0] // get first article
在这里气门需要注意一点的是,因为我们的如果用yii2的restful作为接口,一般数据返回的格式我们也是在服务端定义好的,一般是json,所以如果在这个client的reponse可以无需再设置setFormat(Client::FORMAT_JSON)等。
(4)设置请求头信息
use yii\httpclient\Client;
$client = new Client(['baseUrl' => 'http://example.com/api/1.0']);
$request = $client->createRequest()
->setHeaders(['content-type' => 'application/json'])
->addHeaders(['user-agent' => 'My User Agent']);
$request->getHeaders()->add('accept-language', 'en-US;en');
$request->headers->set('user-agent', 'User agent override');
在响应对象中可以获取header信息
$response = $request->send();
echo $response->getHeaders()->get('content-type');
echo $response->headers->get('content-encoding');