我正在寻找Java的SOAP客户端.
Apache Axis对我来说看起来很臃肿.我不明白为什么Java必须如此复杂.例如,在PHP中,我所要做的就是:
<?php
$global_service_wsdl='https://api.betfair.com/global/v3/BFGlobalService.wsdl';
$betfair=new SoapClient($global_service_wsdl);
$params=array("request"=>
array("header"=>
array("clientStamp"=>0,"sessionToken"=>$session_token)),"locale"=>""
);
$response=$betfair->getAllEventTypes($params);
?>
Run Code Online (Sandbox Code Playgroud)
我的$ response对象包含我需要的所有信息.
任何人都可以建议我如何在没有太多麻烦的情况下在Java中实现这样的东西?
提前谢谢了,
〜编辑1~
@jarnbjo:
这对我来说非常有用.我坚持的一点是我需要输入什么来运行代码?
我运行了这个命令:sh wsdl2java.sh -o output -a -uri https://api.betfair.com/global/v3/BFGlobalService.wsdl
并建立了输出.你认为这比PHP快吗?另外,我有一个"异步"选项.这是否意味着我可以进行异步调用?那将非常有用.我想在基于Java的websocket服务器中运行所有这些.
jar*_*bjo 13
除非您需要标准Java API中SOAP客户端未提供的其他功能,否则您可以在JDK的bin目录中使用wsimport工具(将其指向您的WSDL URL),并让它为服务外观生成Java类.
使用生成的类,您需要比PHP示例中更多的Java代码来执行请求,但它仍然是合理的:
BFGlobalService betfair = new BFGlobalService_Service().getBFGlobalService();
APIRequestHeader header = new APIRequestHeader();
header.setClientStamp(0);
header.setSessionToken("someSessionToken");
GetEventTypesReq req = new GetEventTypesReq();
req.setHeader(header);
req.setLocale("");
GetEventTypesResp response = betfair.getAllEventTypes(req);
Run Code Online (Sandbox Code Playgroud)
此示例因错误而失败,但可能是因为会话令牌无效.
| 归档时间: |
|
| 查看次数: |
21753 次 |
| 最近记录: |