java webservice wsimport 沒法將名稱 'soapenc:Array' 解析爲 'type definition' 組件 時對應的解決方法

(一):代碼以下:java

package com.enso.uploaddata;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.junit.Test;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.encoding.XMLType;
/**
 * nanjin enso projects
 *
 * @author: Mr. Wang
 * @create: 2018-06-2018/6/1
 * @description:
 */
public class testWebService {
    @Test
    public void testWebService () throws Exception{
        String url = "http://106.37.208.228:8083/ForecastService.asmx?WSDL" ;
        //建立客戶端調用webservice的代理對象
        Service service = new Service();
        try {
            //建立一個調用對象,表明對web service 的一次調用
            Call call = (Call) service.createCall();
            //設置web service的url 地址
            call.setTargetEndpointAddress(new java.net.URL(url));
            //設置操做名稱,QName 對象的兩個參數分別爲命名空間和方法名稱
            call.setOperationName(new QName("http://tempuri.org/","UploadProvinceData"));
            //不加這行會拋異常System.Web.Services.Protocols.SoapException: 服務器未能識別 HTTP 頭 SOAPAction 的值:
            call.setSOAPActionURI("http://tempuri.org/UploadProvinceData");
            //傳參
            call.addParameter(new QName("http://tempuri.org/", "loginName"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "password"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "forecastInfo"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "warningInfo"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "healthTip"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "moreInfo"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "moreInfoGraphName"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "moreInfoGraphBytes"), XMLType.XSD_BASE64, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "isFormGraph"), XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter(new QName("http://tempuri.org/", "formOrSceneryGraphName"), XMLType.XSD_STRING, ParameterMode.IN);
             call.addParameter(new QName("http://tempuri.org/", "formOrSceneryGraphBytes"), XMLType.XSD_BASE64, ParameterMode.IN);
            //設置返回值類型                                                         
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
            // 執行調用操做,result 保存返回的結果,invoke 的參數爲實參
            String result = (String) call.invoke(new Object[]{"loginName","password","forecastInfo","warningInfo","healthTip","moreInfo","",new byte[1],"false","",new byte[1]});
            System.out.println(result);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

(二) 或者:ws增長schemaLocation(<s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/> )。以下:web

<s:schema targetNamespace="http://iamsweb.gmcc.net/WS/AbstractTypes">  
      <s:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>  
      <s:complexType name="StringArray">  
        <s:complexContent mixed="false">  
          <s:restriction base="soapenc:Array">  
            <s:sequence>  
              <s:element minOccurs="0" maxOccurs="unbounded" name="String" type="s:string" />  
            </s:sequence>  
          </s:restriction>  
        </s:complexContent>  
      </s:complexType>  
    </s:schema> 
相關文章
相關標籤/搜索