soap set parameter java



我正在实现一项电视列表服务,我决定使用ROVI作为我的数据提供商。

他们为我提供了一个API,允许我通过SOAP请求在应用程序和服务器之间交换数据。

由于我是用Java编程的,所以我使用wsimport生成了使我能够与服务器交互的类。

//Connection
service = new ListingsService();
port = service.getListingsServiceSoap();

我遇到了一个谷歌似乎没有答案的问题。

根据他们的API,每当我想调用SOAP服务时,我都必须将我的API密钥添加到url的末尾。

问题是,我不知道该怎么做。使用wsimport生成的存根,我可以创建一个应该的请求对象;然而,URL并没有按照它们的规范来显示。我目前得到的网址是:http://api.rovicorp.com/v9/listingsservice.asmx所需要的是:http://api.rovicorp.com/v9/listingsservice.asmx?apikey=myAPIkey.我通过打印以下代码获得了它:

System.out.println(port.toString());

尝试运行以下代码:

GetServicesRS servicesRS = port.getServices(getServicesRQ, auth)

产生以下错误:

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 403: Forbidden

我可以使用什么java方法将此参数附加到SOAP请求URL中。

谢谢你的帮助。

编辑。

我仍在努力解决这个问题,并没有幸运地得到回应,如果有人能为我指明一个框架或一些可以促进这一点的东西的方向,那就太好了!

干杯

我设法使用一种名为BindingProvider的东西来解决我的问题。

我在代码中添加了以下内容:

//Connection
service = new ListingsService();
port = service.getListingsServiceSoap();
BindingProvider bindingProvider = (BindingProvider) port;
bindingProvider.getRequestContext()
.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
"http://api.rovicorp.com/v9/listingsservice.asmx?apikey=" + APIKey);

使用上面提到的代码,对API的调用是成功的:

GetServicesRS servicesRS = port.getServices(getServicesRQ, auth)

希望它将来能帮助到别人。

最新更新