2017-09-19 6 views
0

J'ai un fichier WSDL.Comment demander au fichier .wsdl, qui se trouve dans un dossier local?

Je dois effectuer une requête avec 2 paramètres de type Personnalisé, et obtenir la réponse.

J'ai ajouté une référence de service dans mon application cliente comme ceci:

using WSDLCall.wsdlReference; 

Après quoi proxy a été généré.

getCustomerData custInfo = new getCustomerData(); 

ici, getCustomerData est une classe, qui est d'avoir 2 paramètres de type personnalisé.

Je dois attribuer une valeur à ces paramètres et obtenir une réponse.

mon schéma wsdl:

 


    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.7.9.0")] 
    [System.SerializableAttribute()] 
    [System.Diagnostics.DebuggerStepThroughAttribute()] 
    [System.ComponentModel.DesignerCategoryAttribute("code")] 
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://someurl" + 
    "gement/v1")] 
    public partial class GetCustomerData : object,           System.ComponentModel.INotifyPropertyChanged { 

    private CustID custAccIDField; 

    private OtherOrgId1 idField; 

    /// 
    [System.Xml.Serialization.XmlElementAttribute(Order=0)] 
    public CustID custAccID { 
    get { 
    return this.custAccIDField; 
    } 
    set { 
    this.custAccIDField = value; 
    this.PropertyChanged("custAccID"); 
    } 
    } 

    /// 
    [System.Xml.Serialization.XmlElementAttribute(Order=1)] 
    public OtherOrgId1 id { 
    get { 
    return this.idField; 
    } 
    set { 
    this.idField = value; 
    this.PropertyChanged("id"); 
    } 
    } 

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged; 

    protected void PropertyChanged(string propertyName) { 
    System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged; 
    if ((propertyChanged != null)) { 
    propertyChanged(this, new  System.ComponentModel.PropertyChangedEventArgs(propertyName)); 
    } 
    } 
    } 

Répondre

0

Vous ne pouvez pas poster votre schéma wsdl de sorte que vous devrez remplacer vos noms de méthode et de classe.

Pour effectuer un appel:

var client = new WSDLCall.wsdlClient(); 

var param1 = new WSDLCall. ???(); 
var param2 = new WSDLCall. ???(); 
var result = client.getCustomerData(param1, param2); 

Reference link

+0

dans mon cas: je ne suis pas capable d'instancier le client – Kingshuk

0

Tout d'abord, avez-vous un point de terminaison dans la structure de votre définition? Si ce n'est pas le cas, ajoutez-le dans using WSDLCall.wsdlReference = new WSDLCall.wsdlReference(name, url)

Ensuite, assurez-vous que le type personnalisé est également déclaré dans wsdl.

Ensuite, vous pouvez attribuer une valeur à vos paramètres

getCustomerData custInfo = new getCustomerData(); custInfo.Foo = nouveau Foo {Id = 1, Text = "Foo"}; ...

Mais si vous n'avez pas encore des méthodes pour récupérer des données, vous ne pouvez pas « obtenir une réponse »

En bon état, vous aurez une classe pour structurer vos données (avec CustomerData paramètres de type personnalisé) et des méthodes getCustomer (id int), getAllCustomer(), setCustomer (de Cust client), ...

Comme je le vois, votre déclaration de constructeur n'est pas vide et envoie les données avec 2 params dans le constructeur. Vous pouvez donc aussi instancier la classe avec la coutume, mais le même que ci-dessus le type personnalisé doit être déclaré dans wsdl aussi.

EDIT: Comme annoncé, vous n'avez pas de définition de CustID et OtherOrgId1 dans votre WSDL. Vérifiez l'URL de

[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://someurl" + 
    "gement/v1")] 

s'il y a une définition de params à cet endroit. Sans cette définition, vous ne pouvez rien demander.