目的
这个博客是关于企业服务提供者代理的实现,并通过PHP SOAP客户端使用它。通过Web服务的通信是基于SOAP的。目前,只有HTTP(S)支持SOAP。SOAP请求通过Internet通信框架(ICF)进行处理。为此,SAP NetWeaver AS ABAP在ICF中使用HTTP在使用者和提供者之间进行通信。SAP NetWeaver AS ABAP可以用作Web服务的提供者和Web服务的使用者。ABAP代理运行时支持使用集成服务器的Web服务以及通过SOAP的P2P连接。在这两种情况下,都需要使用者代理将消息发送给接收器或实现所需功能的提供者代理。通过配置ABAP使用者,企业应用开发平台,您可以定义连接是基于SOAP的P2P连接,还是应该通过SAP NetWeaver XI协议发送消息。在本例中,我们将配置ES provider代理的端点URL以用作P2P连接,购物返现,这样就可以通过PHP SOAP客户端使用此服务。下图总结了我们上面描述的场景:
提供商代理的配置
服务定义本身不是可以调用的单元。要使用Web服务,首先必须创建服务定义的运行时表示,人工智能是,也称为服务端点。服务端点包含Web服务定义的配置设置,并且位于提供程序系统的特定位置,即所谓的服务端点URL。消费应用程序使用此URL调用配置的Web服务。
要创建服务端点,可以使用SOA管理工具,该工具可以通过事务SOAMANAGER调用。
服务端点允许以下配置设置:
可以使用不同的配置设置分配多个服务端点到Web服务定义。这使您能够向使用者提供具有不同配置设置的相同Web服务定义。服务定义服务端点组。一个服务定义可以包括多个服务,这些服务又可以由多个服务端点组成。此关系如下图所示:
ES开发
在本例中,企业服务提供商将基于一个远程功能模块进行构建,本例使用SFLIGHT表数据,以供PHP SOAP客户端使用。创建FM,如下图所示:
使用参数创建ZèSFLIGHT FM:
接下来,通过菜单->实用程序为FM创建Web服务。ES提供者的输出将如下所示:
在ES中激活您的服务定义并转到SOAMANAGER事务以创建端点URL。在SOAMANAGER中,转到服务管理并搜索您创建的服务。
您可以为每个服务端点生成WSDL文档。与端口类型WSDL(它还不包含配置信息)不同,这个WSDL文档已经包含绑定信息。这里的技巧是将设置从ws\u policy更改为standard,以便可以调用WSDL。
激活您的端点URL定义
PHP开发
在SOAMANAGER中创建WSDL端点URL后,下一步是通过SOAP协议创建使用此服务的客户机。我们将使用PHP,因为已经有大量的SOAP函数库用于此目的。SoapClient函数将使用端点URL并将其绑定到对象$client。简化代码如下:
$login,'password'=>$pass,'trace'=>true,'exceptions'=>true));
try{
$air='AA';
$flight=$client->zslight(array('Carrid'=>$air));
$value=get\u object vars($flight);
$arrayf=数组映射('objectToArray',什么叫云,$value);
?>
故障码。‘] – ‘ . $e->faultstring;
}
函数objectToArray($object)
{
if(!是对象($object)&!is
array($object))
{
return$object;
}
if(is
object($object))
{
$object=get
object|vars($object);
}
return array|map('objectToArray',$object);
}
?>
请注意,此代码具有将提供者服务返回的对象连接到要在HTML表显示中使用的数组的功能。为此,函数objectToArray进行转换。
结果
这里是我的eclipse IDE的输出:
嗨,保罗,
谢谢分享!!恭喜!!
Sandro Ramos
嗨,Sandro,
很高兴你喜欢,我将发布更多相关内容。
问候。
亲爱的Paulo,
很好的文章和我现在的问题一样。
我们想集成第三方PHP软件(sclable.com网站)有两个选择。RFC或SOAP。RFC很早就退出了,因为它不可能在Linux上实现。
因此我们专注于SOAP。该接口已启动并在试点环境中运行。但未来我面临的问题是,在PHP端实现接口将非常耗时。
因此我正在寻找一种可能性,即基于SAP webservices提供的WSDL自动创建(在设计时,甚至在运行时)PHP接口。
在您的文章中,Paulo,您写道:"我们将使用PHP,因为已经有很多SOAP函数库用于此目的了。"
请您解释一下,或者告诉我您正在使用哪些库?
他们是否能够基于SAP WSDL自动创建PHP类?
对于第一个界面,我在WindowsXP客户机上使用了SAP脚本工具和Eclipse3.1.2。这个工具工作得很好,但以后不会支持它。
非常感谢您的信息
问候,
Christian
亲爱的Christian,
它看起来非常复杂的接口项目,SOAP似乎最适合您所描述的场景。
对于SOAP 1.1和1.2,PHP SOAP扩展已经嵌入到PHP>=5.0.1中。
在上面的示例中,我使用了SoapClient类来使用在SOAMANAGER中创建的端点操作。
您可以选择使用几个用于此目的的库和框架,例如:Nusoap、ZendèSoap、WSO2等