我有一个http请求的示例:
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<SVARCHAR2-RMTO_WEB_SERVICESInput xmlns="http://xmlns.oracle.com/orawsv/TR_PUBLIC_WS/PKG_RMTO_WS">
<IN_USERNAME-VARCHAR2-IN>test</IN_USERNAME-VARCHAR2-IN>
<IN_SERVICEID-NUMBER-IN>2</IN_SERVICEID-NUMBER-IN>
<IN_PASSWORD-VARCHAR2-IN>test123</IN_PASSWORD-VARCHAR2-IN>
<IN_PARAM_9-VARCHAR2-IN>""</IN_PARAM_9-VARCHAR2-IN>
<IN_PARAM_8-VARCHAR2-IN>""</IN_PARAM_8-VARCHAR2-IN>
<IN_PARAM_7-VARCHAR2-IN>""</IN_PARAM_7-VARCHAR2-IN>
<IN_PARAM_6-VARCHAR2-IN>""</IN_PARAM_6-VARCHAR2-IN>
<IN_PARAM_5-VARCHAR2-IN>""</IN_PARAM_5-VARCHAR2-IN>
<IN_PARAM_4-VARCHAR2-IN>""</IN_PARAM_4-VARCHAR2-IN>
<IN_PARAM_3-VARCHAR2-IN>""</IN_PARAM_3-VARCHAR2-IN>
<IN_PARAM_2-VARCHAR2-IN>""</IN_PARAM_2-VARCHAR2-IN>
<IN_PARAM_10-VARCHAR2-IN>""</IN_PARAM_10-VARCHAR2-IN>
<IN_PARAM_1-VARCHAR2-IN>111100002</IN_PARAM_1-VARCHAR2-IN>
</SVARCHAR2-RMTO_WEB_SERVICESInput>
</Body>
</Envelope>
我写了此功能,它不会返回任何内容:
public function sendP($params = array() , $debug = false ){
error_reporting(0);
$client = new SoapClient("http://smartcard.rmto.ir:9090/orawsv/TR_PUBLIC_WS/PKG_RMTO_WS?wsdl");
$parameters['USERNAME'] = 'test' ;
$parameters['SERVICEID'] = 2;
$parameters['PASSWORD'] = 'test123';
$parameters['PARAM_1'] = '111100002';
//$parameters['text'] = iconv("UTF-8", 'UTF-8//TRANSLIT',$params['title']);
try{
$status = $client->RETURN($parameters);}
catch(SoapFault $e){
1;
}
if($debug)
return $status;
}
sendP(array()):
我的问题在哪里?我不知道RETURN
功能是否正确。
正如我在WSDL文件中看到的那样,您必须调用" XSD:element"的名称:svarchar2-rmto_web_servicesInput(这是您必须调用以发送所需信息的方法(。您没有"返回"方法,您在代码中提到。
也不要忘记复制要发送的参数的精确名称。尝试此示例,我认为它应该起作用。
祝你好运:(
public function sendP($params = array() , $debug = false ){
$client = new SoapClient("http://smartcard.rmto.ir:9090/orawsv/TR_PUBLIC_WS/PKG_RMTO_WS?wsdl");
$parameters['IN_USERNAME-VARCHAR2-IN'] = 'test' ;
$parameters['IN_SERVICEID-NUMBER-IN'] = 2;
$parameters['IN_PASSWORD-VARCHAR2-IN'] = 'test123';
$parameters['IN_PARAM_1-VARCHAR2-IN'] = '111100002';
try{
$status = $client->SVARCHAR2-RMTO_WEB_SERVICESInput($parameters);}
catch(SoapFault $e){
1;
}
if($debug)
return $status;
如果您不知道自己的功能,则有一个非常有用的功能,称为__getFunctions
-您将看到一个输出,例如
0 => string 'RMTO_WEB_SERVICESOutput RMTO_WEB_SERVICES(SVARCHAR2-RMTO_WEB_SERVICESInput $parameters)' (length=87)
基本上您需要尝试做类似的事情
try
{
$client = new SoapClient("http://smartcard.rmto.ir:9090/orawsv/TR_PUBLIC_WS/PKG_RMTO_WS?wsdl", ['trace' => 1]);
var_dump($client->__getFunctions());
$parameters = [];
//two alternatives here
$client->__soapCall('RMTO_WEB_SERVICES', $parameters);
//or
$client->RMTO_WEB_SERVICES($parameters);
}
catch (SoapFault $e)
{
echo '<h2>Exception Error</h2>';
echo $e->getMessage();
}