主要想實(shí)現(xiàn)異步http client的 get post
你可以看workman/Protocols/Http/Response.php該文件
定義了header變量:
/**
* Header data.
*
* @var array
*/
protected $_header = null;
定義了body變量:
/**
* Http body.
*
* @var string
*/
protected $_body = null;
然后通過(guò)header()和withBody()對(duì)數(shù)據(jù)進(jìn)行賦值,在通過(guò)一下方法進(jìn)行拼接:
/**
* __toString.
*
* @return string
*/
public function __toString()
{
if (isset($this->file)) {
return $this->createHeadForFile($this->file);
}
$reason = $this->_reason ? $this->_reason : static::$_phrases[$this->_status];
$body_len = \strlen($this->_body);
if (empty($this->_header)) {
return "HTTP/{$this->_version} {$this->_status} $reason\r\nServer: workerman\r\nContent-Type: text/html;charset=utf-8\r\nContent-Length: $body_len\r\nConnection: keep-alive\r\n\r\n{$this->_body}";
}
$head = "HTTP/{$this->_version} {$this->_status} $reason\r\n";
$headers = $this->_header;
if (!isset($headers['Server'])) {
$head .= "Server: workerman\r\n";
}
foreach ($headers as $name => $value) {
if (\is_array($value)) {
foreach ($value as $item) {
$head .= "$name: $item\r\n";
}
continue;
}
$head .= "$name: $value\r\n";
}
....
這樣就區(qū)分header和body啦