Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
soap集参数java_Java_Web Services_Soap_Parameters_Request - Fatal编程技术网

soap集参数java

soap集参数java,java,web-services,soap,parameters,request,Java,Web Services,Soap,Parameters,Request,我正在实施一项电视节目列表服务,我决定使用ROVI作为我的数据提供商 它们为我提供了一个API,允许我通过SOAP请求在应用程序和它们的服务器之间交换数据 因为我是用Java编程的,所以我使用wsimport生成类,使我能够与它们的服务器交互 //Connection service = new ListingsService(); port = service.getListingsServiceSoap(); 我遇到了一个谷歌似乎没有答案的问题 根据他们的API,每当我想调用SOAP服务时

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

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

因为我是用Java编程的,所以我使用wsimport生成类,使我能够与它们的服务器交互

//Connection
service = new ListingsService();
port = service.getListingsServiceSoap();
我遇到了一个谷歌似乎没有答案的问题

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

问题是,我不知道怎么做。使用wsimport生成的存根,我可以按原样创建请求对象;但是,URL不会按照其规范显示。我当前得到的url是:并且需要的是:。我通过打印以下代码获得:

System.out.println(port.toString());
GetServicesRS servicesRS = port.getServices(getServicesRQ, auth)
正在尝试运行以下代码:

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)

希望它对将来的人有所帮助。

我使用了一种叫做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)
希望它能帮助将来的人