curl_formadd和curl_easy_setopt(curl, CURLOPT_HTTPHEADER
时间: 2024-08-14 16:03:15 浏览: 102
`cURL` 是一个强大的工具,用于发送 HTTP 请求。当涉及到发送POST请求并设置HTTP头时,`curl_easy_setopt` 和 `curl_formadd` 可以帮助我们实现。
`curl_easy_setopt` 函数允许我们直接设置特定的 `CURLoption`。例如,要设置HTTP头信息,我们可以使用 `CURLOPT_HTTPHEADER`[^1],如下所示:
```c
// 示例
CURL *curl;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, "Content-Type: application/json"); // 设置HTTP头
// 其他选项...
curl_easy_perform(curl); // 发送请求
curl_easy_cleanup(curl);
curl_global_cleanup();
}
```
然而,如果你想要更方便地添加表单字段(包括POST参数),可以使用 `curl_formadd`[^2]。它与 `CURLOPT_POSTFIELDS` 结合使用,如下:
```php
$ch = curl_init();
// 添加HTTP头
curl_setopt_array($ch, [
CURLOPT_URL => "http://example.com",
CURLOPT_HTTPHEADER => ["Content-type: application/json"],
]);
// 使用curl_formadd来添加POST数据
curl_formadd(&multiPart, &lastOffset, CURLFORM_COPYNAME, "key", CURLFORM_FILE, "file.txt", NULL);
// 设置POST数据
curl_setopt($ch, CURLOPT_POSTFIELDS, multiPart);
// 执行请求
curl_exec($ch);
// 清理
curl_multi_free(multiPart);
curl_close($ch);
```
请注意,在这个示例中,`curl_formadd` 常用于处理复杂的表单数据结构,而 `curl_easy_setopt(curl, CURLOPT_POSTFIELDS)` 更适合简单的POST数据。
阅读全文