PHP - 使用SOAP WSDL连接webservice API

时间:2018-02-18 16:18:04

标签: php web-services soap wsdl

我的一位客户最近要求我将他的网络服务与一些外部公司API集成。我必须在PHP中添加集成控制器,因为这是他的表单处理方式。

公司为我提供了:

1)Web服务的WSDL定义,

2)一个名为contract.xml的例子,

3)两个用于数据验证的.xsd文件,

4)三个.xml示例(soap请求,response-true和response-false)

我从来没有做过这样的事情,我想知道是否有任何尝试,如果有人能提供一些让我开始思考自己的知识,我将非常感激关于这个问题的方法。

架构是什么样的:设置'空白'请求为PHP @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mOptions = new MqttConnectOptions(); mOptions.setCleanSession(true); mOptions.setUserName(username); mOptions.setPassword(password.toCharArray()); mClient = new MqttAndroidClient(this, MQTT_HOST, clientId); } @Override public void onResume() { super.onResume(); connect(); } @Override public void onPause() { super.onPause(); disconnect(); } private void connect() { try { mClient.connect(mOptions, null, mConnectCallback); } catch (Exception ex) { ex.printStackTrace(); } } private void disconnect() { try { mClient.disconnect(); } catch (Exception ex) { ex.printStackTrace(); } mClient.unregisterResources(); } private void subscribe() { try { IMqttToken subToken = mClient.subscribe(TOPIC, 1, null, mSubscribeCallback, mMessageListener); } catch (Exception ex) { ex.printStackTrace(); } } private void publish() { try { mClient.publish(topic, new MqttMessage(STR.getBytes()), null, mPublishCallback); } catch (Exception ex) { ex.printStackTrace(); } } 并使用表单输入更新它将是一个很好的解决方案?或者我是否应该尝试更多地了解XML解析并采用这种方式?

1 个答案:

答案 0 :(得分:1)

如果您有WSDL(Web服务文档语言)xml文件,或者您可以在线访问要与之通信的服务的wsdl,那么您不需要解析任何xml,所有这些都应该做定义对象

$ mySoapClient = new SoapClient(" path / to / your / wsdl.xml",array("在这里你应该写下需要你的肥皂服务的参数"));

也可能存在您可以使用

设置的用户凭据
$soapClient = new SoapClient("https://soapserver.example.com/blahblah.asmx?wsdl"); 

// Prepare SoapHeader parameters 
$sh_param = array( 
            'Username'    =>    'username', 
            'Password'    =>    'password'); 
$headers = new SoapHeader('http://soapserver.example.com/webservices', 'UserCredentials', $sh_param); 

// Prepare Soap Client 
$soapClient->__setSoapHeaders(array($headers)); 

连接后,您将使用$ soapClient对象来访问提供soap服务器的所有方法  像这样

$ soapClient-> someMethodThatProvideMySoapServer($ someParams);

这个方法someMethodThatProvideMySoapServer你在服务器中没有来自soap服务器,你可以使用它 您可以从这里学习更多细节 http://php.net/manual/en/book.soap.php http://php.net/manual/en/class.soapclient.php Creating a SOAP call using PHP with an XML body