2010-11-22 3 views
0

J'écris une application pour utiliser le service SOAP. Le flux de travail est comme ceci:Client de service SOAP, "Aucune mise à jour disponible"

Pull dans l'ordre du serveur SOAP (demande de commande) POST/réponse avec les modifications au serveur SOAP (Réponse à la commande) demande des modifications de PO de serveur (demande de modifications de commande)

Le serveur tiers a déjà mis en place un environnement de test pour nous. La première chose que j'essaye de faire est de demander et télécharger la commande du serveur. Mais le problème est que je ne peux télécharger/tirer la commande qu'une fois par application. Après la première fois que j'ai demandé la commande, j'obtiendrai l'exception: "System.Web.Services.Protocols.SoapException: Aucune mise à jour d'ordre disponible". Si je crée une autre application faire la même chose, il sera en mesure de demander la commande à nouveau, mais seulement pour une fois. Y at-il un endroit où je peux définir/config afin que mon application puisse tirer l'ordre quel que soit l'ordre plus récent ou non, ou c'est quelque chose à voir avec le côté serveur?

Le code de test Je tirais commande:

/// <summary> 
    /// Used by supplier to check Order 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void btnRequestPO_Click(object sender, EventArgs e) 
    { 
     string t_return; 
     SupplierServices supplierServices = new SupplierServices(); 

     LoginDetails lgDetails = new LoginDetails(); 
     lgDetails.UserName = "user"; 
     lgDetails.Password = "password"; 
     supplierServices.LoginDetailsValue = lgDetails; 

     RequestPurchaseOrder requestPO = new RequestPurchaseOrder(); 
     requestPO.SupplierCode = "1234"; 
     try 
     { 
      Order returned_order = supplierServices.SupplierRequestPO(requestPO); 
      if (returned_order != null) 
      { 
       t_return = returned_order.ToString(); 
       MessageBox.Show(t_return); 
      } 
      else 
       MessageBox.Show("Returned order is empty!"); 
     } 
     catch (Exception ex) 
     { 
      String responseFromServer = ex.Message.ToString() + " "; 
      if (ex!= null) 
      { 
       MessageBox.Show(responseFromServer); 
      } 
     } 
+0

Quelques notes: 'ex.Message' est déjà une chaîne, donc vous n'avez pas besoin de' ToString'. Si 'ex == null', alors vous aurez jeté un' NullReferenceException' sur la ligne précédente, donc vous n'avez pas besoin de vérifier 'ex! = Null'. Vous ne devriez pas non plus utiliser 'ex.Message' - si vous avez besoin de connaître l'exception, alors vous voulez' ex.ToString() 'pour tout vous montrer. –

Répondre

2

Il ressort de votre code que la réponse « Pas de mises à jour de commande disponible » est renvoyée par le tiers. Vous allez devoir leur demander pourquoi vous obtenez cette erreur.

+0

Merci, c'est en fait comment le serveur fonctionne. Je dois leur demander de générer plus d'ordre de test pour moi. –

Questions connexes