接上文,实现了web service后,可以通过URI访问:
http://localhost:8080/axis2/services/TemperatureWebService/c2fConvertion?cValue=32
或者自己写一个client。
SOAP格式:
package ws.example;
public class TemperatureConverterServiceClient {
public static void main(String[] args) {
TemperatureConverterStub stub;
try {
double c_value = 32;
stub = new TemperatureConverterStub("http://localhost:8080/axis2/services/TemperatureWebService");
TemperatureConverterStub.C2FConvertion c2f = new TemperatureConverterStub.C2FConvertion();
c2f.setCValue(c_value);
TemperatureConverterStub.C2FConvertionResponse res = stub.c2FConvertion(c2f);
System.out.println(res);
System.out.println("C Value : "+c_value+ "/tResult : " +res.get_return());
TemperatureConverterStub.F2CConvertion f2c = new TemperatureConverterStub.F2CConvertion();
f2c.setFValue(res.get_return());
TemperatureConverterStub.F2CConvertionResponse res1 = stub.f2CConvertion(f2c);
System.out.println("F Value : "+res.get_return()+ "/tResult : " +res1.get_return());
} catch (Exception e) {
e.printStackTrace();
}
}
}
结果为:
C Value : 32.0 Result : 89.6
F Value : 89.6 Result : 32.0
REST格式:
public class RESTClient {
private static String toEpr = "http://localhost:8080/axis2/services/TemperatureWebService";
public static void main(String[] args) throws AxisFault {
Options options = new Options();
options.setTo(new EndpointReference(toEpr));
//options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
options.setTransportInProtocol(Constants.TRANSPORT_MAIL);
options.setProperty(Constants.Configuration.ENABLE_REST, Constants.VALUE_TRUE);
ServiceClient sender = new ServiceClient();
sender.setOptions(options);
OMElement result = sender.sendReceive(getPayload());
try {
XMLStreamWriter writer = XMLOutputFactory.newInstance()
.createXMLStreamWriter(System.out);
result.serialize(writer);
writer.flush();
} catch (FactoryConfigurationError e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
private static OMElement getPayload() {
OMFactory fac = OMAbstractFactory.getOMFactory();
OMNamespace omNs = fac.createOMNamespace("http://example.ws", "ns");
OMElement method = fac.createOMElement("c2fConvertion", omNs);
OMElement value = fac.createOMElement("cValue", omNs);
value.addChild(fac.createOMText(value, "32"));
method.addChild(value);
return method;
}
}
结果为:
<ns:c2fConvertionResponse xmlns:ns="http://example.ws"><ns:return>89.6</ns:return></ns:c2fConvertionResponse>