这似乎应该很简单,但也许我错过了一些东西.我只想用Java进行SOAP调用,最好只使用内置的API.我在Java文档中查看javax.xml.soap包时有点不知所措.我试过搜索谷歌,但似乎所有的结果都是从2000年到2002年,他们都在讨论可以用于SOAP调用的库(在我建议构建SOAP库之前).
我不需要处理SOAP请求; 只做一个.该站点有一个非常简单的示例,但它不使用内置的Java SOAP库.我如何使用核心Java基本上做同样的事情?
// Create the parameters
Vector params = new Vector( );
params.addElement(
new Parameter("flightNumber", Integer.class, flightNumber, null));
params.addElement(
new Parameter("numSeats", Integer.class, numSeats, null));
params.addElement(
new Parameter("creditCardType", String.class, creditCardType, null));
params.addElement(
new Parameter("creditCardNumber", Long.class, creditCardNum, null));
// Create the Call object
Call call = new Call( );
call.setTargetObjectURI("urn:xmltoday-airline-tickets");
call.setMethodName("buyTickets");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
call.setParams(params);
// Invoke
Response res = call.invoke(new URL("http://rpc.middleearth.com"), "");
// Deal with the response
Run Code Online (Sandbox Code Playgroud)
自早期以来,肥皂已经发生了很大变化。您可以执行您所描述的操作,但这并不常见。
现在更常见的做法是使用 wsdl2java 工具从服务的 WSDL 描述生成客户端 API。这将为您提供一个漂亮、干净的 API 来调用。
Apache CXF是解决此类问题的一个地方。
一项附带条件是 rpc/encoded。如果您正在处理旧服务,它可能是 rpc/encoded,在这种情况下,您最好的选择是Apache Axis 1.x。其他一切都脱离了 rpc/encoded。
| 归档时间: |
|
| 查看次数: |
14282 次 |
| 最近记录: |