POST API请求异常排查:无响应且未出现在API日志中
问题排查与修复方案
你的POST请求无响应且未出现在API日志中,核心问题集中在请求参数构建逻辑和POST请求的规范处理上,以下是具体问题和修复方法:
1. 地址参数构建完全错误
你用单引号定义$address字符串,PHP单引号不会解析内部变量,导致$sub_premises等变量名直接被当作固定字符串,而非实际变量值。后续又调用json_encode(),把这个错误的字符串再次转成JSON格式,最终拼接在URL里的内容完全不符合API要求。
修复方式:
先构建PHP数组,再转成标准JSON字符串:
$addressData = [ "sub_premises" => $sub_premises, "premises_name" => $premises_name, "thoroughfare_number" => $thoroughfare_number, "thoroughfare_name" => $thoroughfare_name, "post_town" => $post_town, "postcode" => $postcode, "district_id" => $district_id, "nad_key" => $nad_key ]; $addressJson = json_encode($addressData);
2. POST请求参数错误拼接在URL路径中
POST请求的参数应该放在**请求体(body)**里,而非URL路径。你把地址参数直接拼到URL里,会导致API无法识别请求结构,甚至直接拒绝请求,因此日志中看不到相关记录。
修复方式:
调整$request数组结构,将请求体参数单独存放:
$request = array(); $request['apiUsername'] = 'XXXXXXX'; $request['apiPassword'] = 'XXXXXXX'; $request['encryption'] = 'SHA-512'; $request['platform'] = 'LIVE'; $request['method'] = 'POST'; $request['url'] = "/broadband/availability"; // 新增请求体参数字段 $request['body'] = $addressJson;
同时要确保get_plan()方法能正确读取body参数,发送POST请求时将其作为请求体传递,并设置正确的请求头(如Content-Type: application/json)。
3. 冗余代码清理
代码中重复定义了$district_id,删掉其中一行即可:
// 移除重复的这行 // $district_id = isset($_GET["district_id"]) ? $_GET["district_id"] : "";
额外排查建议
- 开启PHP错误日志,检查是否存在变量未定义、JSON编码失败等运行时错误;
- 用Postman直接测试目标API的POST接口,确认API本身是否正常;
- 核对
get_plan()方法的实现,确保它正确处理POST请求的请求体和请求头。
内容的提问来源于stack exchange,提问作者lukeyD
相关产品推荐
相关产品推荐

