curl 通过header发送数据

本文详细介绍使用Laravel框架进行CURL请求的具体实现方法,包括设置请求头、生成HMAC认证令牌、POST数据发送及错误处理等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用laravel框架curl


	static protected $dspId = 62;
	static protected $key = "1234567890123456";
	
	public function api()
	{
		$url = "http://www.baidu.com";
		$timestamp = time();
		$msg = $timestamp.'!!!'.self::$dspId;
		$token = hash_hmac('sha1', $msg, self::$key);
		//组装header
		$header = array("token:".$token, "cache-control:no-cache", "timestamp:".$timestamp, 'dsp_id:'.self::$dspId, "Content-Type:application/json; charset=UTF-8");
		$data['dsp_id'] = self::$dspId;
		$data['pos_id'] = 1;
		$data['show_type'] = 1;
		$data['images']['width'] = 100;
		$data['images']['height'] = 100;
		$datas['ideas'][] = $data;
		$content = json_encode($datas, 320);		
		return $this->tocurl($url, $header, $content);

	}
	public function tocurl($url, $header, $content){
	    $ch = curl_init();
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    curl_setopt($ch, CURLOPT_URL, $url);
	    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
	    curl_setopt($ch, CURLOPT_POST, true);
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
	    $response = curl_exec($ch);
	    if($error=curl_error($ch)){
	        die($error);
	    }
	    curl_close($ch);
	    return $response;
	}
### 如何使用 `curl` 发送带自定义 Header 的 GET 请求 在 Linux 或其他支持的服务器环境中,可以通过 `curl` 工具发送带有自定义 HTTP 头部 (Header) 的 GET 请求。具体实现方式如下: #### 使用 `-H` 参数添加自定义 Header `curl` 提供了 `-H` 参数用于指定额外的 HTTP 头部字段。每调用一次 `-H` 即可添加一个新的头部键值对。 以下是完整的命令结构: ```bash curl -H "Custom-Header-Key: Custom-Value" http://example.com/api/resource ``` 其中: - `-H "Custom-Header-Key: Custom-Value"` 表示添加名为 `Custom-Header-Key` 的头部,并将其值设为 `Custom-Value`。 - `http://example.com/api/resource` 是目标 URL 地址。 如果需要添加多个头部,则重复使用 `-H` 参数即可[^2]。 #### 示例:发送带两个自定义 Header 的 GET 请求 假设我们需要向某个 RESTful API 接口发送一个 GET 请求,并附带以下两个头部信息: 1. `Authorization`: Bearer Token 2. `Accept-Language`: en-US 对应的命令如下: ```bash curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept-Language: en-US" \ https://api.example.com/v1/data ``` 上述命令会向 `https://api.example.com/v1/data` 发起一个 GET 请求,同时携带两个自定义头部字段[^4]。 --- ### 验证请求过程中的细节 为了调试或查看实际发送的内容,可以启用详细的日志模式。通过附加 `-v` 参数,可以让 `curl` 显示其与服务器交互的所有数据流,包括请求头和响应头的信息。 例如: ```bash curl -v -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Accept-Language: en-US" \ https://api.example.com/v1/data ``` 这将打印出完整的通信记录,便于排查潜在问题。 --- ### Python 中模拟 Curl 的替代方案 对于不希望直接依赖 Shell 脚本的情况,在编程语言层面也可以轻松完成相同功能。比如使用 Python 的 `requests` 库来模拟这一行为[^3]。 下面是一个等效于上述 `curl` 命令的 Python 实现: ```python import requests headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN", "Accept-Language": "en-US" } response = requests.get("https://api.example.com/v1/data", headers=headers) print(response.status_code) print(response.text) ``` 该脚本的功能完全匹配前述 `curl` 命令的行为。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值