IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Web service : Erreur contenu incorrect : text/html - SOAP s'attend à "text/xml"


Sujet :

Web & réseau Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Par défaut Web service : Erreur contenu incorrect : text/html - SOAP s'attend à "text/xml"
    Bonjour

    Je suis en train d'essayer d'exécuter un web service fourni par un tiers
    Je suis en Delphi 7
    J'ai donc importé le WSDL avec l'importateur de wsdl

    J'ai obtenu l'unité soap suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    // ************************************************************************ //
    // Les types déclaré dans ce fichier ont été générés à partir de données lues dans le fichier
    // WSDL décrit ci-dessous :
    // WSDL     : <a href="http://sage-app-1000/sfi/server/soap.l1000?wsdl=AC_API_Local" target="_blank">http://sage-app-1000/sfi/server/soap...l=AC_API_Local</a>
    // Encodage : utf-8
    // Version  : 1.0
    // (22/02/2013 11:25:41 - 1.33.2.5)
    // ************************************************************************ //
     
    unit soap;
     
    interface
     
    uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
     
    type
     
      // ************************************************************************ //
      // Les types suivants mentionnés dans le document WSDL ne sont pas représentés
      // dans ce fichier. Ce sont soit des alias[@] de types représentés ou alors ils sont 
      // référencés mais jamais[!] déclarés dans ce document. Les types de la dernière catégorie
      // sont en principe mappés à des types Borland ou XML prédéfinis/connus. Toutefois, ils peuvent aussi
      // signaler des documents WSDL incorrects n'ayant pas réussi à déclarer ou importer un type de schéma.
      // ************************************************************************ //
      // !:string          - "http://www.w3.org/2001/XMLSchema"
      // !:date            - "http://www.w3.org/2001/XMLSchema"
     
      SessionHeader        = class;                 { "http://www.sage.com/fr/line1000/AC_API_Local"[H] }
      AC_CLIENT            = class;                 { "http://www.sage.com/fr/line1000/AC_API_Local" }
     
     
     
      // ************************************************************************ //
      // Espace de nommage : <a href="http://www.sage.com/fr/line1000/AC_API_Local" target="_blank">http://www.sage.com/fr/line1000/AC_API_Local</a>
      // ************************************************************************ //
      SessionHeader = class(TSOAPHeader)
      private
        FsessionId: WideString;
      published
        property sessionId: WideString read FsessionId write FsessionId;
      end;
     
     
     
      // ************************************************************************ //
      // Espace de nommage : <a href="http://www.sage.com/fr/line1000/AC_API_Local" target="_blank">http://www.sage.com/fr/line1000/AC_API_Local</a>
      // ************************************************************************ //
      AC_CLIENT = class(TRemotable)
      private
        FAssujetiTVA: WideString;
        Fcapital: WideString;
        FciviteInterlocuteur: WideString;
        FcleRib: WideString;
        Fcode: WideString;
        FcodeAPE: WideString;
        FcodeBanque: WideString;
        FcodeBicAgence: WideString;
        FcodeEtablissement: WideString;
        FcodeFormeJuridique: WideString;
        FcodeGuichetAgence: WideString;
        FCodePostal: WideString;
        Fcodesite: WideString;
        Fcomplement: WideString;
        FCRUD: WideString;
        FdateAdhesion: TXSDate;
        FdeviseBanque: WideString;
        Fdistribution: WideString;
        FdomiciliationBancaire: WideString;
        Femail: WideString;
        FimmatriculationRCS: WideString;
        Flangue: WideString;
        Flibelle: WideString;
        FlibelleBanque: WideString;
        FlibelleFormeJuridique: WideString;
        Flibellesite: WideString;
        FmodeEcheanceDecaissement: WideString;
        FmodeEcheanceEncaissement: WideString;
        FmodeReglementDecaissement: WideString;
        FmodeReglementEncaissement: WideString;
        FnomInterlocuteur: WideString;
        FnomRueVoie: WideString;
        FnumeroCompte: WideString;
        FnumeroTVA: WideString;
        FPays: WideString;
        FprenomInterlocuteur: WideString;
        FraisonSociale: WideString;
        FSIRET: WideString;
        FsiteInternet: WideString;
        FstructureCompte: WideString;
        Ftelecopie: WideString;
        Ftelephone1: WideString;
        Ftelephone2: WideString;
        Fterritorialite: WideString;
        FtypeAcceptation: WideString;
        FTypePersonne: WideString;
        Fville: WideString;
      public
        destructor Destroy; override;
      published
        property AssujetiTVA: WideString read FAssujetiTVA write FAssujetiTVA;
        property capital: WideString read Fcapital write Fcapital;
        property civiteInterlocuteur: WideString read FciviteInterlocuteur write FciviteInterlocuteur;
        property cleRib: WideString read FcleRib write FcleRib;
        property code: WideString read Fcode write Fcode;
        property codeAPE: WideString read FcodeAPE write FcodeAPE;
        property codeBanque: WideString read FcodeBanque write FcodeBanque;
        property codeBicAgence: WideString read FcodeBicAgence write FcodeBicAgence;
        property codeEtablissement: WideString read FcodeEtablissement write FcodeEtablissement;
        property codeFormeJuridique: WideString read FcodeFormeJuridique write FcodeFormeJuridique;
        property codeGuichetAgence: WideString read FcodeGuichetAgence write FcodeGuichetAgence;
        property CodePostal: WideString read FCodePostal write FCodePostal;
        property codesite: WideString read Fcodesite write Fcodesite;
        property complement: WideString read Fcomplement write Fcomplement;
        property CRUD: WideString read FCRUD write FCRUD;
        property dateAdhesion: TXSDate read FdateAdhesion write FdateAdhesion;
        property deviseBanque: WideString read FdeviseBanque write FdeviseBanque;
        property distribution: WideString read Fdistribution write Fdistribution;
        property domiciliationBancaire: WideString read FdomiciliationBancaire write FdomiciliationBancaire;
        property email: WideString read Femail write Femail;
        property immatriculationRCS: WideString read FimmatriculationRCS write FimmatriculationRCS;
        property langue: WideString read Flangue write Flangue;
        property libelle: WideString read Flibelle write Flibelle;
        property libelleBanque: WideString read FlibelleBanque write FlibelleBanque;
        property libelleFormeJuridique: WideString read FlibelleFormeJuridique write FlibelleFormeJuridique;
        property libellesite: WideString read Flibellesite write Flibellesite;
        property modeEcheanceDecaissement: WideString read FmodeEcheanceDecaissement write FmodeEcheanceDecaissement;
        property modeEcheanceEncaissement: WideString read FmodeEcheanceEncaissement write FmodeEcheanceEncaissement;
        property modeReglementDecaissement: WideString read FmodeReglementDecaissement write FmodeReglementDecaissement;
        property modeReglementEncaissement: WideString read FmodeReglementEncaissement write FmodeReglementEncaissement;
        property nomInterlocuteur: WideString read FnomInterlocuteur write FnomInterlocuteur;
        property nomRueVoie: WideString read FnomRueVoie write FnomRueVoie;
        property numeroCompte: WideString read FnumeroCompte write FnumeroCompte;
        property numeroTVA: WideString read FnumeroTVA write FnumeroTVA;
        property Pays: WideString read FPays write FPays;
        property prenomInterlocuteur: WideString read FprenomInterlocuteur write FprenomInterlocuteur;
        property raisonSociale: WideString read FraisonSociale write FraisonSociale;
        property SIRET: WideString read FSIRET write FSIRET;
        property siteInternet: WideString read FsiteInternet write FsiteInternet;
        property structureCompte: WideString read FstructureCompte write FstructureCompte;
        property telecopie: WideString read Ftelecopie write Ftelecopie;
        property telephone1: WideString read Ftelephone1 write Ftelephone1;
        property telephone2: WideString read Ftelephone2 write Ftelephone2;
        property territorialite: WideString read Fterritorialite write Fterritorialite;
        property typeAcceptation: WideString read FtypeAcceptation write FtypeAcceptation;
        property TypePersonne: WideString read FTypePersonne write FTypePersonne;
        property ville: WideString read Fville write Fville;
      end;
     
     
      // ************************************************************************ //
      // Espace de nommage : <a href="http://www.sage.com/fr/line1000/AC_API_Local" target="_blank">http://www.sage.com/fr/line1000/AC_API_Local</a>
      // soapAction : <a href="http://www.sage.com/fr/line1000/AC_API_Local/ImportClient" target="_blank">http://www.sage.com/fr/line1000/AC_A...l/ImportClient</a>
      // transport : <a href="http://schemas.xmlsoap.org/soap/http" target="_blank">http://schemas.xmlsoap.org/soap/http</a>
      // style     : document
      // liaison   : WS_ImportClientbinding
      // service   : WS_ImportClient
      // port      : WS_ImportClientPort
      // URL       : <a href="http://sage-app-1000:80/sfi/server/soap.l1000" target="_blank">http://sage-app-1000:80/sfi/server/soap.l1000</a>
      // ************************************************************************ //
      WS_ImportClientPortType = interface(IInvokable)
      ['{1CA29692-0091-5C5D-EF2A-9EE08BF5FC8C}']
        function  ImportClient(const client: AC_CLIENT): WideString; stdcall;
      end;
     
    function GetWS_ImportClientPortType(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): WS_ImportClientPortType;
     
     
    implementation
     
    function GetWS_ImportClientPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): WS_ImportClientPortType;
    const
      defWSDL = 'http://sage-app-1000/sfi/server/soap.l1000?wsdl=AC_API_Local';
      defURL  = 'http://sage-app-1000:80/sfi/server/soap.l1000';
      defSvc  = 'WS_ImportClient';
      defPrt  = 'WS_ImportClientPort';
    var
      RIO: THTTPRIO;
    begin
      Result := nil;
      if (Addr = '') then
      begin
        if UseWSDL then
          Addr := defWSDL
        else
          Addr := defURL;
      end;
      if HTTPRIO = nil then
        RIO := THTTPRIO.Create(nil)
      else
        RIO := HTTPRIO;
      try
        Result := (RIO as WS_ImportClientPortType);
        if UseWSDL then
        begin
          RIO.WSDLLocation := Addr;
          RIO.Service := defSvc;
          RIO.Port := defPrt;
        end else
          RIO.URL := Addr;
      finally
        if (Result = nil) and (HTTPRIO = nil) then
          RIO.Free;
      end;
    end;
     
     
    destructor AC_CLIENT.Destroy;
    begin
      if Assigned(FdateAdhesion) then
        FdateAdhesion.Free;
      inherited Destroy;
    end;
     
    initialization
      InvRegistry.RegisterInterface(TypeInfo(WS_ImportClientPortType), 'http://www.sage.com/fr/line1000/AC_API_Local', 'utf-8');
      InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WS_ImportClientPortType), 'http://www.sage.com/fr/line1000/AC_API_Local/ImportClient');
      InvRegistry.RegisterInvokeOptions(TypeInfo(WS_ImportClientPortType), ioDocument);
      InvRegistry.RegisterHeaderClass(TypeInfo(WS_ImportClientPortType), SessionHeader, 'SessionHeader', '');
      RemClassRegistry.RegisterXSClass(SessionHeader, 'http://www.sage.com/fr/line1000/AC_API_Local', 'SessionHeader');
      RemClassRegistry.RegisterXSClass(AC_CLIENT, 'http://www.sage.com/fr/line1000/AC_API_Local', 'AC_CLIENT');
     
    end.

    Ensuite j'appelle le web service par l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    procedure TForm1.Button2Click(Sender: TObject);
    var Mon_AC_CLIENT : AC_CLIENT;
     
     
    begin
      // Affectation des variables
      Mon_AC_CLIENT := AC_CLIENT.Create;
     
      Mon_AC_CLIENT.AssujetiTVA := ' ';
     
      // Appel du WS
     
      Memo1.text := GetWS_ImportClientPortType(true, '', nil).ImportClient(Mon_AC_CLIENT);
     
      ShowMessage('code retour := ' + Memo1.Text);
     
    end;
    et lors de l'appel j'obtiens l'erreur : Contenu reçu du paramètre de type de contenu incorrect : text/html - SOAP s'attend à "text/xml"

    Quel est le problème ?

    Merci d'avance pour vos réponses

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 001
    Par défaut
    C'est une erreur du Serveur Web qui t'envoie du text genre erreur 404 ou autre

    Lorsque j'ai réalisé des clients WS en D7,
    j'ai hérité de THTTPRio
    J'ai redéfini DoBeforeExecute (car le OnBeforeExecute ne survenait jamais) pour odifier le SOAP pour les éléments que ne gérait pas D7

    Idem j'ai redéfini DoAfterExecute pour lire SOAPResponse
    et choper Erreur contenu incorrect : text/html - SOAP s'attend à "text/xml" en dans ce cas j'affichais le contenu dans un TWebBrowser
    Je n'ai plus souvenir si j'ai utilise DoAfterExecute ou OnAfterExecute en D7, je pense DoAfterExecute puis OnBeforeExecute ne fonctionnait pas, j'ai suivi la même logique
    Je n'ai plus le code, j'ai changé d'emploi depuis !
    J'avais cette erreur lorsque le script PHP plantait (sur-consommation mémoire, délai trop long, erreur MySQL...)

    J'ai aussi joué sur THTTPWebNode.OnBeforePost pour ajouter des paramètres de connexion
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 8
    Dernier message: 20/12/2013, 15h16
  2. Réponses: 4
    Dernier message: 27/05/2009, 11h52
  3. Web Service Erreur 401
    Par Bal1n dans le forum Services Web
    Réponses: 2
    Dernier message: 03/11/2008, 10h46
  4. [SOAP][Web Service] erreur création d'une référence Web
    Par Maximil ian dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 20/06/2005, 13h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo