PHP通过CURL向WebService发送XML请求无响应排查求助
我来帮你捋捋这个问题,你现在遇到的情况其实挺常见的,大概率是CURL配置没做全,或者对这个SOAP服务的调用逻辑没摸准,咱们一步步排查:
1. 先补全CURL的核心配置(你贴的代码明显没写完)
很多时候空响应都是因为漏了关键的CURL选项,比如没开启返回结果、没设置POST请求头,给你一个完整的配置参考:
$request = build_xml(); $length = strlen($request); // 注意:WSDL是服务描述文件,实际调用的端点通常不带?wsdl,后面会说怎么找正确地址 $url = "https://sonwin-test.forsyningsit.dk/XMLBasisWS.svc"; $curl = curl_init(); // 核心必选配置 curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POST, true); // 明确是POST请求 curl_setopt($curl, CURLOPT_POSTFIELDS, $request); // 传入XML请求体 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 关键!让CURL把响应返回给变量,而不是直接输出 // 设置请求头(SOAP服务必须的) curl_setopt($curl, CURLOPT_HTTPHEADER, [ "Content-Type: text/xml; charset=utf-8", "Content-Length: " . $length, // 如果是SOAP服务,还需要加SOAPAction头,具体值要从WSDL里找,比如: // "SOAPAction: \"http://forsyningsit.dk/IXMLBasisWS/YourOperationName\"" ]); // 测试环境临时跳过证书验证(生产环境绝对不能这么做!) curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 执行请求 $data = curl_exec($curl); // 一定要检查CURL错误!这是排查问题的关键 if(curl_errno($curl)){ echo "CURL错误:" . curl_error($curl); } curl_close($curl); var_dump($data);
2. 确认WebService的实际调用地址
你用的https://sonwin-test.forsyningsit.dk/XMLBasisWS.svc?wsdl是WSDL描述文件的地址,不是实际调用服务的端点。你可以打开这个WSDL链接,搜索<soap:address location="..." />标签,里面的URL才是你应该填到$url里的地址。
3. 检查XML请求是否符合SOAP规范
如果这是个SOAP服务,你的XML不能只是单纯的业务数据,必须包裹在SOAP信封里,比如:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <!-- 这里放你build_xml()生成的业务内容 --> </soap:Body> </soap:Envelope>
如果你的XML没有这个信封,服务可能无法识别请求,只会返回一个默认的“无错误”提示,却不给实际响应。
4. 开启CURL调试日志,抓请求细节
要是还是有问题,开启详细调试日志,看看发送的请求和服务返回的细节:
// 在curl_exec前添加这几行 curl_setopt($curl, CURLOPT_VERBOSE, true); $verboseLogFile = fopen('php://temp', 'w+'); curl_setopt($curl, CURLOPT_STDERR, $verboseLogFile); // 执行请求后查看日志 rewind($verboseLogFile); $logContent = stream_get_contents($verboseLogFile); echo "<pre>" . htmlspecialchars($logContent) . "</pre>";
日志里会显示请求头、请求体、响应状态码等信息,能帮你精准定位问题。
内容的提问来源于stack exchange,提问作者Tankegang
相关产品推荐
相关产品推荐

