我习惯编写PHP代码,但不经常使用面向对象的编码.我现在需要与SOAP(作为客户端)进行交互,并且无法正确获取语法.我有一个WSDL文件,它允许我使用SoapClient类正确设置新连接.但是,我无法实际进行正确的调用并返回数据.我需要发送以下(简化)数据:
WSDL文档中定义了两个函数,但我只需要一个(下面的"FirstFunction").这是我运行的脚本,用于获取有关可用功能和类型的信息:
$client = new SoapClient("http://example.com/webservices?wsdl");
var_dump($client->__getFunctions());
var_dump($client->__getTypes());
Run Code Online (Sandbox Code Playgroud)
这是它生成的输出:
array(
[0] => "FirstFunction Function1(FirstFunction $parameters)",
[1] => "SecondFunction Function2(SecondFunction $parameters)",
);
array(
[0] => struct Contact {
id id;
name name;
}
[1] => string "string description"
[2] => string "int amount"
}
Run Code Online (Sandbox Code Playgroud)
假设我想用数据调用FirstFunction:
什么是正确的语法?我一直在尝试各种各样的选择,但看起来肥皂结构非常灵活,所以有很多方法可以做到这一点.无法从手册中弄清楚......
更新1:试过MMK的样本:
$client = new SoapClient("http://example.com/webservices?wsdl");
$params = array(
"id" => 100,
"name" => "John",
"description" => "Barrel of Oil",
"amount" => 500,
);
$response = $client->__soapCall("Function1", array($params)); …Run Code Online (Sandbox Code Playgroud) 我对网络服务世界相对较新,我的研究似乎让我困惑不仅仅是启发我,我的问题是我得到了一个库(jar),我必须扩展一些web服务功能.
这个库将与其他开发人员共享,并且jar中的类将是具有调用webservice的方法的类(实质上设置类的属性,执行一些业务逻辑,如将对象存储在db中,等,并通过这些修改发送回对象).我想尽可能简单地调用这个服务,希望这很简单,这样开发人员只需要使用类.
Car c = new Car("Blue");
c.webmethod();
Run Code Online (Sandbox Code Playgroud)
我一直在研究JAX-WS在服务器上使用,但在我看来,我不需要wsimport在服务器wsimport上创建一个,也不需要在客户端上创建,因为我知道两者都有类,我只需要在类之间进行一些交互在服务器和客户端共享.您认为在课堂上进行网络服务和通话有何意义?
我对SOAP消息和WSDL如何组合起来感到困惑?我已经开始研究SOAP消息,例如:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
所有SOAP消息都是WSDL的吗?SOAP是一种接受自己的"SOAP消息"还是"WSDL"的协议?如果它们不同,那么我何时应该使用SOAP消息?何时应该使用WSDL?
对此的一些澄清将是非常棒的.
是否有任何公开可用的SOAP 1.2/WSDL 2.0兼容免费Web服务来测试基于Python的soap客户端库(例如Zolera SOAP Infrastructure)?
到目前为止,在我看来,Google Web API可能是唯一的选择.
否则,如何测试符合SOAP 1.2的客户端库?
什么是最推荐的免费/公共API用于访问金融市场统计数据和股票报价(最好是实时报价)?我不太挑剔它的暴露程度(SOAP,REST,一些专有的XML设置等),只要它有一些体面的文档.
我打算在PHP中使用一些基本数据构建一个简单的Web仪表板(基本上是一个快速的脏主页),但最终可能希望将其扩展为一个完整的Web应用程序.有什么想法吗?
当我找到一些时,我会在这里发布一个列表(如果您之前使用过任何一个,请随意评论):
自由
不是免费的
我正试图在我当前的项目中解决一个Web服务客户端问题.我不确定服务服务器的平台(很可能是LAMP).我相信他们身边有一个错误,因为我已经消除了我的客户的潜在问题.客户端是从服务WSDL自动生成的标准ASMX类型Web引用代理.
我需要得到的是RAW SOAP消息(请求和响应)
最好的方法是什么?
有人可以向我解释Document和RPC风格的webservices之间的区别吗?除了JAX-RPC之外,下一个版本是JAX-WS,它支持Document和RPC样式.我也理解文档样式webservices是用于异步通信的,其中客户端在收到响应之前不会阻塞.
无论哪种方式,使用JAX-WS我当前使用@Webservice注释服务,生成WSDL,并从该WSDL生成客户端工件.
收到工件后,在两种样式中,我都会在端口上调用方法.现在,这在RPC样式和文档样式上没有区别.那有什么区别,这种差异在哪里可见?
同样,SOAP over HTTP与HTTP上的XML有何不同?毕竟SOAP也是带有SOAP命名空间的XML文档.
在阅读了一些关于JAX-RS和JAX-WS的文章之后,我有几个问题需要确认?
我想知道使用node.js使用SOAP XML Web服务的最佳方法是什么
谢谢!