Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Soap, Web Service Soap-Header

    Buon giorno a tutti
    Questa dovrebbe essere la sezione giusta..
    Ho un bel problema.. Devo sviluppare una applicazione web c# che si colleghi tramite messaggi SOAP ad un webservice asmx non sviluppato da me.

    Sono riuscito ad aggiungere il servizio web al progetto, chiamare le funzioni, ma mi ritorna l'exception "System.Web.Services.Protocols.SoapException: Errore di autenticazione del partner"
    Dunque per accedervi devo modificare l'Header del messaggio SOAP dov'è presente nome utente e password.
    codice:
    <soap:Header>
        <Agency xmlns="http://*****/**">
          <Code>string</Code>
          <Culture>string</Culture>
        </Agency>
        <Partner xmlns="http://*****/**">
          <Name>string</Name>
          <Password>string</Password>
        </Partner>
      </soap:Header>
    Non ho la più pallida idea di come si faccia.. ci sono poche guide online e nessuna di quelle che ho trovato fa al caso mio. Quindi ho pensato di chiedere il vostro aiuto

    Potete passo passo dirmi come mi devo comportare?

    Diciamo che nn sono un fun di c# e .net e questa è la prima volta che mi muovo con la tecnologia SOAP, i miei studi in materia non sono stati molto approfonditi e quindi potrei dimostrare delle lacune probabilmente comiche!

    Vi ringrazio anticipatamente e spero che mi rispondiate presto

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    è riassunto bene in questo post:
    http://forums.asp.net/t/1459414.aspx/1

    Riporto, semplificando:
    codice:
    // SoapHeader con Username e Password
    public class MyHeader : SoapHeader
    {
        public string username;
        public string password;
    }
    
    
    // ASMX
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class Service1 : System.Web.Services.WebService
    {
        public MyHeader testata;
    
    
        [WebMethod]
        [SoapHeader("testata", Direction = SoapHeaderDirection.In)]
        public string HelloWorld()
        {
            string result = String.Empty;
    
            if (testata.username == "peppe" && testata.password == "password")
            {
                result = "Ciao Peppe!";
            }
            return (result);
        }
    }

  3. #3
    Ti ringrazio per la risposta ma non ho capito che devo fare

    Allora io ho il progetto chiamato Testwebservice, con un Web References che ho chiamato "Availabilityreference" al link del webservice(fatto da terzi e non da me).

    Il namespace è Availabilityreference.
    Ho aggiunto using Testwebservice.Availabilityreference;

    Nel form load ho messo
    Availability service = new Availability();
    var c = service.ListAllShips(); <-(questa è una funzione del webservice)
    ...

    il tuo codice sembra sia lato webservice e non lato client (forse mi sbaglio)

    Puoi chiarire?? grazie

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    si, per il client domani ti posto il codice.

    devi soltanto costruire la soapHeader ed 'agganciarla' all'invocazione. Sono poche righe di codice.

    tieni conto che io parlo di un client ASP.Net e non di Windows Apps. Anche se credo faccia lo stesso.

  5. #5
    si scusa ho sbagliato io a dire form load .. stavo facendo un app form per testarlo.. devo fare comunque una app web.
    A tal proposito usare Visual Web Developer è corretto?

    Grazie ancora per la risposta Aspetto il codice

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Allora, innanzitutto dovresti essere sicuro di come è sviluppata la SoapHeader.
    Ad occhio, dall'XML, sembrano due classi o due strutture, Agency e Partner.

    codice:
          Availability service = new Availability();
               
           // SoapHeader
           Availability.Header MyHeader = new Availability.Header();
    
           MyHeader.Agency.Code = ".....";
           MyHeader.Agency.Culture = "......";
           MyHeader.Partner.Name = "peppe";
           MyHeader.Partner.Password = "password";
    
           try
           {
             var c = service.ListAllShips(); 
           }
           catch (Exception ex)
           {
               throw ex;
           }

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Si, se visual web developer supporta il tutto, è corretto. io uso VS2008/2010

  8. #8
    Grazie ancora comunque nella mia precedente prova lo avevo implementato così.

    mi sottolinea Header

    The type name 'Header' does not exist in the type 'Testwebservice.Availabilityreference.Availability ' C:\Users\darsenaweb\Documents\Visual Studio 2010\Projects\Testwebservicecosta\Testwebserviceco sta\Form1.cs 31

    puoi aiutarmi?
    http://www.darsenatravel.com -
    Vai in Vacanza con Darsena Travel - I prezzi più bassi del web!

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    devi farti dare le specifiche del WS e vedere come si chiama la CLASSE della SoapHeader !

    quella che nel WS è scritta piu' o meno cosi':

    codice:
    public class MyHeader : SoapHeader
    {
        public string username;
        public string password;
    }
    Devi farti dire la tua <MyHeader>.

  10. #10
    grazie li contatto subito.. nel frattempo vedo se trovo qualcosa nelle 450 pagine di specifiche che mi hanno dato. Speriamo mi rispondino presto che già ho perso diversi giorni!

    Ti ringrazio ancora per la disponibilità e spero di non doverti più disturbare !! In caso contrario continuo la "discussione" in questo post.
    Buona giornata

    Giuseppe www.darsenatravel.com
    http://www.darsenatravel.com -
    Vai in Vacanza con Darsena Travel - I prezzi più bassi del web!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.