Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Consuming a simple asp.net 2.0 web service from delphi

Îåêßíçóå áðü ôï ìÝëïò afiag. Τελευταία δημοσίευση από το μέλος miraclegr στις 13-09-2007, 19:44. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-05-2006, 15:21 12804

    Consuming a simple asp.net 2.0 web service from delphi

    Εφτιαξα ένα απλό asp.net 2.0 web service που περιμένει ένα string και επιστρέφει ένα άλλο String.
    Το εκανα κανονικα consume απο ενα .net application.
    Προσπαθόντας να το κάνω consume από το delphi 7 και 2006 μου βγάζει: SOAP Response Packet, Result element expected..........

    Αυτός ήταν ο κώδικας για το webservice.

    [WebMethod]
        public string GetMyName(string myName)
        {
            return myName;
        }

    Εφτιαξα το HelloWorld και το εκανα consume κανονικά.

    [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }


    Μετά άλλαξα το πρώτο και του έβαλα να επιστρεφει και κάτι ακόμα

    [WebMethod]
        public string GetMyName(string myName)
        {
            return "My name is " + myName;
        }



    Το αποτέλεσμα ήταν ότι δεν μου έβγαζε error αλλα επέστρεφε μονο το σταθερό κομμάτι
    δηλαδη "My name is "
    Δεν μπορεί να περάσει τιμή στην myName. Είναι empty.

    Πρέπει να σημειώσω ότι φτιαχνοντας το ιδιο web service με το Visual Studio 2003
    το κάνω κανονικά consume απο το delphi.

    Ξέρει κανένας τίποτα;

    Ευχαριστώ ! ! !



  •  16-05-2006, 17:02 12827 σε απάντηση της 12804

    Απ: Consuming a simple asp.net 2.0 web service from delphi

    Τελικά κατάφερα να το κάνω να τρέξει.
    Εχει σχέση με το wsdl.
    Σύγκρινα τα wsdl από το studio 2003 και 2005 και είδα 2 διαφορές.
    Μια μεγάλη παράγραφος λίγο πριν το τέλος και μία προτασούλα λιγο ποιο πάνω.
    Η μεγάλη που ξεκινάει:

    <wsdl:binding name="ServiceSoap12" type="tns:ServiceSoap">
        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="HelloWorld">
        ...........
        ...........
    </wsdl:binding>

    δεν νομίζω οτι δημιουργεί κάποιο πρόβλημα.


    Το πρόβλημα ήταν η μικρή διαφορά στο σημείο που ξεκινάει:

    <wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="HelloWorld">
          <soap:operation soapAction="http://tempuri.org/HelloWorld" style="document" />
        .........
        .........
        .........
    </wsdl:binding>

    Το έκανα έτσι:
    <wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
        <wsdl:operation name="HelloWorld">
          <soap:operation soapAction="http://tempuri.org/HelloWorld" style="document" />
        .........
        .........
        .........
    </wsdl:binding>

    Η μόνη διαφορά είναι ότι πρ'οσθεσα το
    style="document".
    Προσθέτοντας αυτό δούλεψε κανονικά.

    Δεν ξέρω πως ξεκινάει το πρόβλημα. Δηλαδη αν είναι θέμα ρυθμίσεων ή κάποιας ασυμβατότητας
    του ενός ή του άλλου εργαλέιου.

    Αν κάποιος βασιζόμενος σε αυτά μπορεί να φτάσει σε καλύτερο συμπέρασμα θα ήταν καλό.

  •  12-09-2007, 22:47 34971 σε απάντηση της 12827

    Απ: Consuming a simple asp.net 2.0 web service from delphi

    Ακολούθησα την ίδια διαδικασία και εγώ για να καλέσω ένα web service (.net 2) από Delphi 7. Όλα λειτουργούν κανονικά εκτός από τα ελληνικά.

    Αν σε web service που λαμβάνει μια παράμετρο τύπου string, περάσω αγγλικούς χαρακτήρες λειτουργεί κανονικά. Αν περάσω ελληνικά μετατρέπονται στον server σε ερωτηματικά (????????).

    Μήπως γνωρίζεις κάτι γι'αυτό?

     

  •  13-09-2007, 08:42 34977 σε απάντηση της 34971

    Απ: Consuming a simple asp.net 2.0 web service from delphi

    99.999% δεν χρησιμοποιείς Unicode strings. Τα ? είναι το αποτέλεσμα όταν μετατρέπεται ένα string από το ένα codepage στο άλλο και δεν υπάρχει αντιστοιχία μεταξύ των χαρακτήρων. Όσοι χαρακτήρες δεν μπορούν να μετατραπούν αντικαθίστανται με ?. Διαφορετικά, θα έβλεπες "κινέζικα".
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  13-09-2007, 19:44 34998 σε απάντηση της 34977

    Απ: Consuming a simple asp.net 2.0 web service from delphi


    Φυσικά και έχεις δίκιο. Απλά έλπιζα κάποιος να ξέρει και ποιές είναι αυτές οι ρυθμίσεις στην Delphi ώστε να στείλει το σωστό codepage στο web service.
    Μου πήρε μια μέρα για να τις βρώ γιατί δεν είναι και τόσο προφανές. Παραθέτω την λύση και για όσους μελλοντικούς αντιμετωπίσουν το ίδιο:

    Στο HTTPRIO component πρέπει να δηλωθεί η παρακάτω παράμετρος η οποία by default είναι false.

    HTTPRIO.HTTPWebNode.UseUTF8InHeader=True;

    Ευχαριστώ πολύ για την ανταπόκριση.

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems