1

Adobe Flex Builder WSDL 类自动生成器生成奇怪的文件。

例如:

http://ws.cdyne.com/WeatherWS/Weather.asmx?wsdl

导入后会生成以下文件:

ArrayOfForecast.as
ArrayOfWeatherDescription.as
ArrayOfWeatherDescription0.as
BaseWeather.as
BaseWeatherSchema.as
Forecast.as
ForecastReturn.as
ForecastReturn0.as
GetCityForecastByZIPResultEvent.as
GetCityForecastByZIP_request.as
GetCityWeatherByZIPResultEvent.as
GetCityWeatherByZIP_request.as
GetWeatherInformationResultEvent.as
GetWeatherInformation_request.as
IWeather.as
POP.as
Temp.as
Weather.as
WeatherDescription.as
WeatherReturn.as
WeatherReturn0.as

最终文件中的这些零是什么?

这是具有 3 个操作的服务示例。我真正的 wsdl 有更多的方法和类型。

更新

同时,Java 生成了一组更清晰的类:

Forecast.java
ForecastReturn.java
POP.java
Temp.java
WeatherDescription.java
Weather.java
WeatherLocator.java
WeatherReturn.java
WeatherSoap12Stub.java
WeatherSoap.java
WeatherSoapProxy.java
WeatherSoapStub.java

对于这样的小型服务并不明显,但对于具有更多操作和类型的大型服务,它会生成数百个类。我怀疑 Adob​​e Flex 团队是否以适当的方式自动生成 wsdl 类。

更新-2

WeatherReturn.as:

 public class WeatherReturn
 {
  /**
   * Constructor, initializes the type class
   */
  public function WeatherReturn() {}

  public var Success:Boolean;
  public var ResponseText:String;
  public var State:String;
  public var City:String;
  public var WeatherStationCity:String;
  public var WeatherID:Number;
  public var Description:String;
  public var Temperature:String;
  public var RelativeHumidity:String;
  public var Wind:String;
  public var Pressure:String;
  public var Visibility:String;
  public var WindChill:String;
  public var Remarks:String;
 }

WeatherReturn0.as:

 public class WeatherReturn0
 {
  /**
   * Constructor, initializes the type class
   */
  public function WeatherReturn0() {}

  public var WeatherReturn:com.cdyne.WeatherReturn;
 }

WeatherReturn.java:

public class WeatherReturn  implements java.io.Serializable {
    private boolean success;
    private java.lang.String responseText;
    private java.lang.String state;
    private java.lang.String city;
    private java.lang.String weatherStationCity;
    private short weatherID;
    private java.lang.String description;
    private java.lang.String temperature;
    private java.lang.String relativeHumidity;
    private java.lang.String wind;
    private java.lang.String pressure;
    private java.lang.String visibility;
    private java.lang.String windChill;
    private java.lang.String remarks;

// Skipped constructors and getter/setter

    private java.lang.Object __equalsCalc = null;
    public synchronized boolean equals(java.lang.Object obj)

    private boolean __hashCodeCalc = false;
    public synchronized int hashCode()

    // Type metadata
    private static org.apache.axis.description.TypeDesc typeDesc =  new org.apache.axis.description.TypeDesc(WeatherReturn.class, true);

    static {
        typeDesc.setXmlType(new javax.xml.namespace.QName("http://ws.cdyne.com/WeatherWS/", "WeatherReturn"));
        org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("success");
        elemField.setXmlName(new javax.xml.namespace.QName("http://ws.cdyne.com/WeatherWS/", "Success"));
        elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "boolean"));
        elemField.setNillable(false);
        typeDesc.addFieldDesc(elemField);
        elemField = new org.apache.axis.description.ElementDesc();
        elemField.setFieldName("responseText");
 // More typedesc here ...
    }

    public static org.apache.axis.description.TypeDesc getTypeDesc() {
    public static org.apache.axis.encoding.Serializer getSerializer(
    public static org.apache.axis.encoding.Deserializer getDeserializer(
}

我只为 Java 示例留下了方法签名,并跳过了 getter/setter。

4

0 回答 0