You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Apify API发送含startUrls数组的HTTP POST请求?

解决PHP中向Apify API发送带嵌套数组请求体的POST请求问题

你已经找对了核心方向,不过代码片段没写完,我来帮你补全完整的可运行代码,同时拆解关键要点:

首先,Apify的这个API要求POST请求体是JSON格式,且startUrls必须是包含键值对的数组——你的$postData结构是对的,但需要把PHP数组转成JSON字符串才能被API正确解析。下面是完整的实现代码:

<?php
// 替换为你自己的API参数
$apiUrl = 'https://api.apify.com/v1/USERID/crawlers/CRAWLERID/execute?token=TOKENID';

// 按照API要求构造请求体数据
$postData = [
    'startUrls' => [
        ['key' => 'START', 'value' => 'https://instagram.com/instagram']
    ]
];

// 将PHP数组编码为JSON字符串(API要求的请求体格式)
$jsonPayload = json_encode($postData);

// 创建HTTP请求上下文,配置POST请求的细节
$requestContext = stream_context_create([
    'http' => [
        'method' => 'POST',
        // 必须设置Content-Type告诉服务器接收的是JSON数据
        'header' => "Content-Type: application/json\r\n" .
                    "Content-Length: " . strlen($jsonPayload) . "\r\n",
        'content' => $jsonPayload // 传入JSON格式的请求体
    ]
]);

// 发送请求并获取响应
$apiResponse = file_get_contents($apiUrl, false, $requestContext);

// 处理请求结果
if ($apiResponse === false) {
    // 请求失败时捕获错误信息
    $lastError = error_get_last();
    echo "请求失败:" . $lastError['message'];
} else {
    // 解析API返回的JSON响应
    $responseData = json_decode($apiResponse, true);
    print_r($responseData);
}
?>

关键细节说明:

  • JSON编码的必要性:Apify API不接受PHP原生数组作为请求体,必须用json_encode()转换为JSON字符串,这是很多REST API的通用要求。
  • 请求头配置:Content-Type: application/json是核心头信息,没有它服务器会无法正确解析你的请求体;Content-Length则帮助服务器确认接收的数据长度,避免截断。
  • 错误处理:添加file_get_contents()的错误捕获逻辑,能帮你快速排查网络问题、API权限问题等。

额外小贴士:

  • 如果需要添加多个起始URL,只需在startUrls数组中追加新的键值对即可:
    'startUrls' => [
        ['key' => 'START', 'value' => 'https://instagram.com/instagram'],
        ['key' => 'START', 'value' => 'https://instagram.com/apify']
    ]
    
  • 若遇到SSL证书验证错误(测试环境常见),可以在上下文里临时添加SSL配置(生产环境不建议禁用验证):
    'ssl' => [
        'verify_peer' => false,
        'verify_peer_name' => false
    ]
    

内容的提问来源于stack exchange,提问作者Jack Ellis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:36:44