PHP cURL调用SOAP XML接口返回无元素名纯值字符串问题求助
解决方案
先检查页面源代码
你看到的无标签长字符串大概率是浏览器渲染导致的,浏览器默认会把未声明格式的XML标签当作无效HTML标签直接忽略,只展示标签内的文本。你可以右键点击页面选择「查看网页源代码」,就能看到完整的XML响应结构。新增响应格式声明
如果你需要在浏览器中直接可视化查看XML结构,在输出响应前加一行Content-Type声明即可:
// 在echo $response; 前添加 header('Content-Type: text/xml; charset=utf-8'); echo $response;
- 补充Accept请求头
Postman发送请求时会自动携带合理的Accept头,你导出的代码中缺少明确的返回格式声明,可能导致部分服务端返回非XML格式的响应。你可以在CURLOPT_HTTPHEADER配置中新增Accept字段:
CURLOPT_HTTPHEADER => array( 'Content-Type: text/xml; charset=utf-8', 'SOAPAction: urn:getNameOptions', 'Accept: text/xml, application/xml' // 新增这行 ),
- 解析XML内容
如果你需要后续处理响应中的字段,可以用PHP内置的SimpleXML扩展直接解析响应字符串:
$response = curl_exec($curl); curl_close($curl); // 解析XML为对象 $xml = simplexml_load_string($response); // 打印解析后的结构查看字段 print_r($xml);
内容的提问来源于stack exchange,提问作者Santosh Pillai
相关产品推荐
相关产品推荐

