我正在寻找一个用于
Java的SOAP客户端.
Apache Axis对我来说看起来很blo肿.我不明白为什么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); ?>
而我的$response对象包含了我所需要的所有信息.
有人可以建议我如何在Java中实现这样的东西,而不用太麻烦?
提前谢谢了,
〜编辑1〜
@jarnbjo:
这对我来说非常有用.我坚持的一点是,我需要什么导入才能使该代码运行?
我运行了这个命令:
sh wsdl2java.sh -o输出-a -uri https://api.betfair.com/global/v3/BFGlobalService.wsdl
并建立输出.你认为这比PHP快吗?另外,我有一个“异步”选项.这是否意味着我可以进行异步调用?这将是非常有用的.我想在基于Java的Websocket服务器中运行所有这些.
解决方法
除非您需要SOAP API客户端在标准Java API中提供的附加功能,否则可以使用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);