Καλησπέρα bazzil,
Επειδή είχα την τύχη την περασμένη βδομάδα να έχω προσωπική ενασχόληση με το συγκεκριμένα service - πλην της θεωρητικής καθοδήγησης που είχα γράψει εδώ, πριν μερικά χρόνια.
Η αλήθεια είναι ότι είχα γράψει, ισχύει ακόμα, και ας έχουν περάσει τόσα χρόνια - αλλά, υπάρχει αλλά...
Αρχικά, ένα service είναι ένα service και πάντα πρέπει να του φέρεσαι έτσι και να το χρησιμοποιείς έτσι. Συγκεκριμένα, το Visual Studio και περισσότερο δε το .NET Framework, σου δίνει τα εργαλεία για να χειριστείς τα XML web services και σου φτιάχνει αυτόματα class stubs για τη εύκολη χρήση τους. Το "σωστό" θα ήταν να πάρεις αυτό το δρόμο, μιας και η ενημέρωση του service αργότερα θα είναι και δεξί κλικ στο Visual Studio, αν ποτέ το χρειαστείς - αυτή η πρακτική δεν είναι ποτέ λάθος.
Το "αλλά" ξεκινάει από την ελλιπή τεκμηρίωση του service από την ίδια την αρχή που το διαθέτει - σου δίνονται δείγματα XML αρχείων. Προφανώς αυτός που έφτιαξε το πακέτο υποστήριξης δεν είναι ακριβώς προγραμματιστής, και αυτό που βρήκε χρήσιμο το έβαλε μαζί με την υπηρεσία σαν documentation, για να βοηθήσει άλλους προγραμματιστές.
Να σου πω ότι έψαξα στο internet να βρω κάτι έτοιμο και αυτά που βρήκα ήταν τα εξής:
- Μια υλοποίηση του καθηγητή Δ. Σπινέλη (https://github.com/dspinellis/greek-vat-data), αλλά η υλοποίηση για το service σε C# είναι ένα text template που συμπληρώσεις τα δεδομένα - δεν υπάρχει το stub που φτιάχνει το .NET Framework.
- Σε ένα forum (http://www.logistis-forotexnis.gr) βρήκα το link για ένα pdf, που σίγουρα βοηθάει να δεις πως λειτουργεί το service (http://www.logistis-forotexnis.gr/ckfinder/userfiles/files/%CE%9F%CE%B4%CE%B7%CE%B3%CE%AF%CE%B5%CF%82%20%CE%B3%CE%B9%CE%B1%20%CE%A0%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%B9%CF%83%CF%84%CE%AD%CF%82.pdf), αλλά αν κάτσεις και το ακολουθήσεις θα δεις ότι το SoapUI δεν δίνει λύση σε αυτό που θες - πιο πολύ σε πάρει πίσω στα εργαλεία του .NET Framework, παρά σε οδηγεί πως να περάσεις τα στοιχεία που θες στο header και να καλέσεις την υπηρεσία.
- Σαν να μην έφταναν τα παραπάνω, το σχετικό documentation για τα XML services από την Microsoft είναι πλέον ελλιπές - σε σχέση με το αρχικό documentation που υπήρχε, πολλά έχουν διαγραφεί, ή έχουν αλλάξει ή αναμένουν να διορθωθούν και να προσαρμοστούν στο .NET Core. Οπότε ούτε από εκεί έρχεται η βοήθεια που θες.
Αυτό που με οδήγησε σε αυτό που ήθελα από την αρχή - να χρησιμοποιήσω το stub class και να περάσω την ασφάλεια στο header του request ήταν ένα post στο stackoverflow.com: (https://stackoverflow.com/questions/5833539/how-to-add-security-header-to-a-soap-message). Η ερώτηση είναι το πρόβλημα που θέλουμε να λύσουμε στην περίπτωση του service της ΑΑΔΕ. Η εύκολη λύση είναι η 2η, να φτιάξεις το header σαν xml και να το φορτώσεις στο request του stub και να πάρεις την απάντηση. Η πρώτη λύση με την χρήση του WSE 2.0, μπορεί και να παίζει, αλλά δεν την προτίμησα γιατί το WSE 2.0, έχει γίνει WSE 3.0 και ήταν extensions επάνω στο πρότυπο του SOAP, ουσιαστικά μιλάμε για το "παππού" των WCF services. Όπως το WCF, έτσι και με το WSE δεν θες να εξαρτάσαι από αυτά, αλλά να είσαι μακριά.
Δεν έχω κώδικα να σου δείξω άμεσα, αλλά θα το κάνω το συντομότερο...
George J.