(object)[], // 空对象 'query' => '你好', 'response_mode' => 'blocking', 'user' => DIFY_USER, ]; echo "请求数据:\n"; echo json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT) . "\n\n"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload, JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_VERBOSE, true); // 开启详细输出 echo "发送请求...\n"; $response = curl_exec($ch); $statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); echo "HTTP状态码: {$statusCode}\n"; echo "响应内容长度: " . strlen($response) . " 字节\n"; if ($error) { echo "cURL错误: {$error}\n"; } echo "\n响应内容:\n"; if (empty($response)) { echo "(空响应)\n\n"; } else { echo $response . "\n\n"; } if ($statusCode == 200) { if (empty($response)) { echo "✗ 响应为空\n\n"; echo "可能的原因:\n"; echo "1. Dify应用未发布或已停用\n"; echo "2. API Key不正确\n"; echo "3. response_mode='blocking' 不支持(试试改成 'streaming')\n"; echo "4. Dify服务器问题\n"; } else { $data = json_decode($response, true); if (json_last_error() !== JSON_ERROR_NONE) { echo "✗ JSON解析失败: " . json_last_error_msg() . "\n"; } elseif (isset($data['answer'])) { echo "✓ 成功!AI回复: " . $data['answer'] . "\n"; } else { echo "✗ 响应格式错误\n"; echo "JSON内容: " . print_r($data, true) . "\n"; } } } else { echo "✗ 请求失败(HTTP {$statusCode})\n"; }