php - 肥皂电话和 __doRequest
问题描述
我正在调用网络服务,但我无法得到答案。我需要一个特殊的“信封”,所以我自己创建了一个并用它来调用 Web 服务。这就是我所做的一切:
$sobre = '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">';
$sobre .= '<Body><cargaTituloElectronicoRequest xmlns="http://ws.web.mec.sep.mx/schemas">';
$sobre .= '<nombreArchivo>' . $arch . '</nombreArchivo>';
$sobre .= '<archivoBase64>' .$xml . '</archivoBase64>';
$sobre .= '<autenticacion><usuario>' . $user . '</usuario><password>' . $pass . '</password></autenticacion>';
$sobre .= '</cargaTituloElectronicoRequest></Body></Envelope>';
$location_URL="https://metqa.siged.sep.gob.mx/met-ws/services/TitulosElectronicos.wsdl";
$action ="https://metqa.siged.sep.gob.mx/met-ws/services/TitulosElectronicos.wsdl/cargaTituloElectronico";
$client = new SoapClient($location_URL, array('trace' => 1));
try{
$resultado = $client->__doRequest($sobre, $location_URL, $action, 'SOAP_1_2', 0);
}catch (SoapFault $exception){
var_dump(get_class($exception));
var_dump($exception);
$numLote = 0;
}
echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n";
我没有收到 __getLastRequest()
,(不知道为什么)......和“ $action
”我已经使用了方法(' cargaTituloElectronico
')但它不起作用。
我无法使用$client->cargaTituloElectronico($params)
,因为服务器不接受自动生成的信封。
非常感谢您对我的帮助。提前致谢
解决方案
这个问题的解决方法:
声明一个扩展 SoapClient 的新类,然后使用您自己的 evelope 重载 __doRequest 方法。
而已。有效。
推荐阅读
- authentication - 在tomcat自定义JNDIRealm中访问会话信息
- laravel - 如何在 Laravel Mail 上默认设置 CC/BCC
- convox - Convox Gen3 不能使用通配符子域?
- javascript - 在元素上选择 e.target.value ?
- mysql - 插件“InnoDB”初始化函数返回错误
- react-native - React-native:Android 11蓝牙权限未显示在设置>应用程序> myapp>权限中
- php - 如何在 Php Curl GET 请求中传递数组 -Laravel?
- angular - 使用 pixi.js 6.1.3 构建 angular 9 Universal
- regex - 正则表达式:使用正则表达式验证域名
- reactjs - 更改箭头函数以全局使用 var