Java動態調用WebService方法

突然之間.WSDL2JAVA不能認Delphi寫的WebSerice生成的WSDL了.於是纔開始看看如何動態調用, 其實這裏的代碼都是從JBuilderX的WSDL2JAVA中自動生成的stub作參考的.

    OperationDesc opd = new OperationDesc();
    opd.setName(
"AttemperFiberPairChannel");
    opd.addParameter(
new QName("aStartID"), XMLType.XSD_INT, int.class,
        ParameterDesc.IN, 
falsefalse);
    opd.addParameter(
new QName("aStartType"), XMLType.XSD_STRING, String.class,
        ParameterDesc.IN, 
falsefalse);
    opd.addParameter(
new QName("aEndID"), XMLType.XSD_INT, int.class,
        ParameterDesc.IN, 
falsefalse);
    opd.addParameter(
new QName("aEndType"), XMLType.XSD_STRING, String.class,
        ParameterDesc.IN, 
falsefalse);
    opd.setReturnType(
new QName("string"));
    opd.setReturnClass(String.
class);
    opd.setReturnQName(
new QName("""return"));

    Service service 
= new Service();
    Call call 
= (Call) service.createCall();
    call.setOperation(opd);
    call
        .setTargetEndpointAddress(
"http://localhost/WebService/NormalResourceAttemperok/SOAP/INormalResourceAttemper");
    call.setOperationName(
new QName(
        
"urn:NormalResourceAttemperIntf-INormalResourceAttemper",
        
"AttemperFiberChannel"));
    call
        .setSOAPActionURI(
"urn:NormalResourceAttemperIntf-INormalResourceAttemper#AttemperFiberChannel");
    Object rsl 
= call.invoke(new Object[]{調用的參數});

  if (rsl instanceof RemoteException) {
       throw (RemoteException) rsl;
  } else {
     將其轉化爲你要的對象.這裏就是String對象.
  }


裏面的urn部分可以從wsdl裏得到, 返回的對象可能是遠程異常哦.
發佈了48 篇原創文章 · 獲贊 0 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章