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

新手求助:如何在PHP中通过SOAP请求获取Token

PHP中通过SOAP请求获取Token的新手指南

前提:开启PHP SOAP扩展

首先确认你的PHP环境已开启SOAP扩展:

  • 执行<?php phpinfo(); ?>,搜索"soap"确认扩展启用
  • 若未开启,在php.ini中找到extension=soap,去掉前面的分号;后重启Web服务器

方法一:使用PHP内置SoapClient(推荐)

SoapClient会自动解析WSDL生成调用方法,是最简便的实现方式:

<?php
// 目标WSDL地址
$wsdlUrl = 'https://hma.ecvi.ru/service/webform.wsdl.php';

try {
    // 实例化SoapClient,trace参数开启调试日志
    $client = new SoapClient($wsdlUrl, ['trace' => 1, 'encoding' => 'UTF-8']);
    
    // 准备请求参数,对应示例中的WebChanelID和AccessCode
    $params = [
        'WebChanelID' => 8,
        'AccessCode' => '444555'
    ];
    
    // 调用GetToken方法
    $response = $client->GetToken($params);
    
    // 输出响应结果(需根据实际返回结构调整,比如$response->GetTokenResult)
    var_dump($response);

    // 调试用:查看发送的SOAP请求
    // echo "请求XML: " . $client->__getLastRequest();
    // 调试用:查看收到的SOAP响应
    // echo "响应XML: " . $client->__getLastResponse();
} catch (SoapFault $e) {
    echo "SOAP请求错误: " . $e->getMessage();
} catch (Exception $e) {
    echo "请求异常: " . $e->getMessage();
}
?>

注意事项:

  • trace => 1参数可让你查看实际的XML请求/响应,方便排查问题
  • 响应结构需根据服务返回调整,比如若返回字段为GetTokenResult,则用$response->GetTokenResult获取Token

方法二:手动构造SOAP请求(cURL实现)

如果SoapClient无法正常解析WSDL,可手动构造XML请求,通过cURL发送:

<?php
// 构造符合要求的SOAP请求XML
$soapXml = '<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
   <soap:Header/>
   <soap:Body>
      <tem:GetToken>
         <tem:WebChanelID>8</tem:WebChanelID>
         <tem:AccessCode>444555</tem:AccessCode>
      </tem:GetToken>
   </soap:Body>
</soap:Envelope>';

// SOAP服务地址
$soapUrl = 'https://hma.ecvi.ru/service/webform.wsdl.php';

// 初始化cURL
$ch = curl_init($soapUrl);

// 设置cURL请求参数
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $soapXml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/soap+xml; charset=utf-8',
    'Content-Length: ' . strlen($soapXml)
]);

// 发送请求并获取响应
$response = curl_exec($ch);

// 检查cURL错误
if (curl_errno($ch)) {
    echo "cURL错误: " . curl_error($ch);
} else {
    // 输出响应内容
    var_dump($response);
    // 可通过SimpleXML解析响应提取Token,示例路径需根据实际调整
    // $xml = simplexml_load_string($response);
    // $token = $xml->children('soap', true)->Body->children('tem', true)->GetTokenResponse->GetTokenResult;
}

// 关闭cURL连接
curl_close($ch);
?>

注意事项:

  • 确保XML中的命名空间、参数值与示例完全匹配
  • 用SimpleXMLElement或DOMDocument解析响应XML时,需根据实际返回节点路径调整提取逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:55:41