php curl 分割header和body信息

近期做项目使用了阿里云的云市场的api,调用完发现返回了头部信息,因此看了一下阿里云提供的sdk里的写的方法,

发现可以通过这样分割
阿里的方法
class HttpResponse
{
    private $content;
	private $body;
	private $header;
	private $requestId;
	private $errorMessage;
	private $contentType;
	private $httpStatusCode;

	/**
	*根据headersize大小,区分返回的header和body
	*/
	public function setHeaderSize($headerSize) {
		if (0 < $headerSize && 0 < strlen($this->content)) {
			$this->header = substr($this->content, 0, $headerSize);
			self::extractKey();
		}
		if (0 < $headerSize && $headerSize < strlen($this->content)) {
			$this->body = substr($this->content, $headerSize);
		}
	}

	/**
	*提取header中的requestId和errorMessage
	*/
	private function extractKey() {
		if (0 < strlen($this->header)) {
			$headers = explode("\r\n", $this->header);
			foreach ($headers as $value) {
				if(strpos($value, "X-Ca-Request-Id:") !== false) 
				{
					$this->requestId = trim(substr($value, strlen("X-Ca-Request-Id:")));
				}
				if(strpos($value, "X-Ca-Error-Message:") !== false) 
				{
					$this->errorMessage = trim(substr($value, strlen("X-Ca-Error-Message:")));
				}
			}
		}
	}
}


或者直接
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
    $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
    $header = substr($response, 0, $headerSize);
    $body = substr($response, $headerSize);
}


第三种方法基于header和body是通过两个回车换行来分割的,所以可以通过如下代码实现:

$response = curl_exec($ch);
if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == '200') {
    list($header, $body) = explode("\r\n\r\n", response, 2);
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要设置 PHP cURL 请求的 header,可以使用 CURLOPT_HTTPHEADER 选项。下面是一个简单的示例代码:$headers = array('Content-Type: application/json', 'Authorization: Bearer {token}'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); ### 回答2: 可以使用PHPcURL扩展来设置请求头信息。以下是设置请求头的示例代码: ``` // 创建一个cURL句柄 $curl = curl_init(); // 设置请求URL curl_setopt($curl, CURLOPT_URL, "http://example.com"); // 设置请求头信息 $headers = array( "Content-Type: application/json", "Authorization: Bearer Your-Token" ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // 执行请求并获取响应 $response = curl_exec($curl); // 检查是否有错误发生 if (curl_errno($curl)) { $error_message = curl_error($curl); // 处理错误 } // 关闭cURL句柄 curl_close($curl); ``` 在上述代码中,通过使用`curl_setopt`函数来设置cURL选项。`CURLOPT_URL`用于指定请求的URL。`CURLOPT_HTTPHEADER`用于设置请求头信息,其中`$headers`是一个包含多个头部信息的数组。您可以根据需要自定义头部信息。最后,通过调用`curl_exec`函数来执行请求并获取响应。 如果请求期间发生错误,您可以使用`curl_errno`和`curl_error`函数来获取错误信息并进行相应的处理。 希望这个代码对您有所帮助! ### 回答3: 在PHP中,可以使用cURL函数库进行HTTP请求。设置请求头信息可以通过设置`CURLOPT_HTTPHEADER`选项来完成。下面是一个设置header的示例代码: ```php // 初始化cURL会话 $ch = curl_init(); // 设置请求的URL curl_setopt($ch, CURLOPT_URL, "http://example.com"); // 设置请求头信息 $header = array( "Content-Type: application/json", "Authorization: Bearer token" ); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 其他cURL选项,如超时设置等 // 执行请求 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)){ echo 'cURL错误:' . curl_error($ch); } // 关闭cURL会话 curl_close($ch); // 处理响应数据 echo $response; ``` 上述代码中,通过`curl_setopt()`函数设置了`CURLOPT_HTTPHEADER`选项,将请求头信息设置为一个包含多个字符串的数组`$header`。每个字符串代表一个请求头,可以根据需要自行添加。 注意,`CURLOPT_HTTPHEADER`选项要求请求头信息必须以字符串的形式进行设置,所以需谨慎使用。 以上代码示例仅供参考,实际使用中还需要根据具体情况进行调整和完善。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值