我是网络服务的新手。我的要求是在 java 类中使用相同的输入调用不同供应商提供的不同 web 服务。例如:天气信息由不同的供应商提供,所有供应商都将输入作为城市名称。我想在 java 类中调用一个方法,该方法并行调用不同供应商提供的所有 web 服务。然后我必须按供应商(所有供应商使用axis2)在jsp中显示结果。
问问题
130 次
1 回答
0
如果您有相同的输入,这应该不难。
假设您使用的是axis2 Java API,您可以执行以下操作:
public class Test {
public static void main(String[] args) throws AxisFault,Exception {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
String [] vendors = {"http://example.com/vendor1/services/GETWeatherHttpSoap12Endpoint", "http://example.com/vendor2/services/GETWeatherHttpSoap12Endpoint"}; // Array of all vendors
for (String vendor : vendors) {
EndpointReference targetEPR = new EndpointReference(vendor);
options.setTo(targetEPR);
QName opGetExchange = new QName("http://ws.apache.org/axis2", "getWeather");
// preparing the parameters
String country = "USA";
Object[] opGetExchangeArgs = new Object[] {country};
// preparing the return type
Class[] returnTypes = new Class[] { String.class };
// invoking the service passing in the arguments and getting the response
Object[] response = serviceClient.invokeBlocking(opGetExchange, opGetExchangeArgs, returnTypes);
// obtaining the data from the response
String result = (String) response[0];
System.out.println("Vendor: " + result);
}
}
}
这会将每个供应商的结果打印在不同的行上。
于 2012-06-06T16:28:24.153 回答