我有一个来自肥皂的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
功能是否正确。
答案 0 :(得分:0)
正如我在WSDL文件中看到的那样,您必须调用名称“xsd:element”:SVARCHAR2-RMTO_WEB_SERVICESInput(这是您必须调用以发送所需信息的方法)。你已经在代码中提到过没有“RETURN”方法。
并且不要忘记复制要发送的参数的确切名称。 试试这个例子,我认为它应该可行。
祝你好运:)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;
答案 1 :(得分:0)
如果你不了解你的功能,那么有一个非常有用的功能叫__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();
}