begin process at 2012 02 09 21:25:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Réseau & Internet

 > 

Interroger un Webservice


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Interroger un Webservice

vendredi 15 décembre 2006 à 11:56:32 | Interroger un Webservice

nanou1605

Bonjour,

je suis débutant en C++.
J'utilise C++ 6 Builder.


je dois interroger un webservice qu'une autre société à créé.

je l'interroge depuis Windev et il marche sans problème mais depuis le C++, le filtre ne marche pas, il ne tient pas compte de mon filtre " WHERE RequestID > 422 "

Je ne connais pas grand chose en XML donc je pense que le problème viendrai de l'entête XML

Voici les différences remarquées dans l'entête des 2 fichiers envoyés vers le webservice.
 
En WINDEV
      Accept:  */*
      Connection: close

EN c++
      Accept: text/xml
      Connection: Keep-Alive

Est-ce que le problème vient de la? Le WebService n'interpretrait pas bien le fichier XML.
 Si oui, comment le modifier.

Merci

Sébastien.

PS: Je suis obligé utilisé C++ car en Windev j'ai des problème d'accent dans d'autres fonctions

Voici le code C++ et les fichier XML créé et envoyé au WebService

//************************************************
ArrayOfRequestInfo ArrayReqInfo ;
RequestInfo* ReqInfo = new RequestInfo;
AnsiString Resultset;

//Déclare une interface d'accès au service
_di_WSRequestsSoap WSRequestsSoap;

//Acquérir l'interface vers le service désiré
WSRequestsSoap = GetWSRequestsSoap();
AnsiString filter;
filter = " WHERE RequestID > 422 " ;
WSRequestsSoap->ArrayReqInfo = WSRequestsSoap->GetRequests(filter);

for(int i = 0 ;i<ArrayReqInfo.get_length();i++)
{
        ReqInfo = ArrayReqInfo[i];
        Resultset =  IntToStr(ReqInfo->RequestYear);
        Resultset =  Resultset + " - ";
        Resultset =  Resultset + IntToStr(ReqInfo->RequestSubId);
        Resultset =  Resultset + " - ";
        Resultset =  Resultset + IntToStr(ReqInfo->RequestSubId);
        Resultset =  Resultset + " - ";
        Resultset =  Resultset + ReqInfo->Applicant;
        LBResult->Items->Add(Resultset);
}

//************************************************
//Class
//************************************************

class  RequestInfo;

enum StatusEnum   {
  E,
  T,
  C,
  B,
  P
};

class StatusEnum_TypeInfoHolder : public TObject {
  StatusEnum __instanceType;
public:
__published:
  __property StatusEnum __propType = { read=__instanceType };
};



class RequestInfo : public TRemotable {
private:
  int             FRequestYear;
  int             FRequestId;
  int             FRequestSubId;
  int             FCustomerId;
  AnsiString      FApplicant;
  TXSDateTime*    FCreationDate;
  TXSDateTime*    FClosingDate;
  StatusEnum      FStatus;
  AnsiString      FRequest;
public:
  __fastcall ~RequestInfo();
__published:
  __property int        RequestYear = { read=FRequestYear, write=FRequestYear };
  __property int         RequestId = { read=FRequestId, write=FRequestId };
  __property int        RequestSubId = { read=FRequestSubId, write=FRequestSubId };
  __property int        CustomerId = { read=FCustomerId, write=FCustomerId };
  __property AnsiString  Applicant = { read=FApplicant, write=FApplicant };
  __property TXSDateTime* CreationDate = { read=FCreationDate, write=FCreationDate };
  __property TXSDateTime* ClosingDate = { read=FClosingDate, write=FClosingDate };
  __property StatusEnum     Status = { read=FStatus, write=FStatus };
  __property AnsiString    Request = { read=FRequest, write=FRequest };
};


typedef DynamicArray<RequestInfo*> ArrayOfRequestInfo; // //

__interface INTERFACE_UUID("{B5B5E398-73D6-8A45-B9DB-6311C904196A}") WSRequestsSoap : public IInvokable
{
public:
  virtual bool            AddRequest(const RequestInfo* requestInfo) = 0;
  virtual bool            UpdateRequest(const RequestInfo* requestInfo) = 0;
  virtual bool            DeleteRequest(const int requestYear, const int requestId, const int requestSubId) = 0;
  virtual ArrayOfRequestInfo GetRequests(const AnsiString filter) = 0;
  virtual RequestInfo*    GetRequest(const int requestYear, const int requestId, const int requestSubId) = 0;
};
typedef DelphiInterface<WSRequestsSoap> _di_WSRequestsSoap;

_di_WSRequestsSoap GetWSRequestsSoap(bool useWSDL=false, AnsiString addr="");


//************************************************
//   FIN CLASSE
//************************************************


Résultat grâce à un sniffer:

fichier xml envoyé depus WINDEV:

POST /modules/CustomersRequests/WSRequests.asmx HTTP/1.1
Content-Length: 420
Content-Type: text/xml
Accept:  */*
Host: www.MonSite.com
User-Agent: PC SOFT Framework
Connection: close
SOAPAction: " [ Lien ]"

<SOAP-ENV:Envelope xmlns:SOAP-ENV=" [ Lien ]"
xmlns:xsi=" [ Lien ]"
xmlns:xsd=" [ Lien ]">
<SOAP-ENV:Body>
<GetRequests xmlns=" [ Lien ]"
SOAP-ENV:encodingStyle=" [ Lien ]">
<filter xsi:type="xsd:string"> WHERE RequestID &gt; 422 </filter>
</GetRequests>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

fichier xml envoyé depuis C++:

POST /modules/customersrequests/wsrequests.asmx HTTP/1.1
Accept: text/xml
SOAPAction: " [ Lien ]"
Content-Type: text/xml
User-Agent: Borland SOAP 1.1
Host: www.MonSite.com
Content-Length: 514
Connection: Keep-Alive
<?xml version="1.0"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV=" [ Lien ]"
xmlns:xsd=" [ Lien ]"
xmlns:xsi=" [ Lien ]"
xmlns:SOAP-ENC=" [ Lien ]">
<SOAP-ENV:Body SOAP-ENV:encodingStyle=" [ Lien ]">
<NS1:GetRequests xmlns:NS1=" [ Lien ]">
<filter xsi:type="xsd:string"> WHERE RequestID &gt; 422 </filter>
</NS1:GetRequests>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>



Cette discussion est classée dans : int, http, property, resultset, requestinfo


Répondre à ce message

Sujets en rapport avec ce message

Capture flux video Camera AXIS 215 PTZ [ par punisher83 ] Bonjour à tous,voilà j'ai un problème, je travaille sur une camera axis et je n'arrive pas à capturer le flux de ma caméra sous Qt, pour le moment j'a je n'arrive pas a affiche mon program [ par saidsarr ] quand je l'exécute il n'affiche pas le message de saisi de matrice et quand je tape une touche je sorte du programme si qu'elle peu m'aider a résoudr Analyse des visites d'un site Web [ par BGMarouene ] Analyse des visites d'un site Web Introduction Les serveurs web enregistrent la trace des visites dans des fichiers de log. Chaque requète (demande d' réalisation d'un projet de controle d'accés a base de la technologie RFID [ par riadh4070 ] on s'interesse a réaliser la partie du projet qui consiste a détecter la présence d'une carte RFID et l'identifier...pour faire on concevoit une carte tracer des points en c [ par fireman42 ] Bonjour à tous :) Pour un projet d'algorithmique, je dois écrire en C le programme suivant : a) Créer 1000 points d'abscisse de 1 à 1000 et d'ordonné Jeu puissance 4 coder en C qui plante des le lancement o_O help^^ [ par ElendilAranwe ] Bonjour comme dis dans le titre, j'ai crée le puissance 4 et coder celui-ci en C++ et il plante dès le démarrage ce qui est très frustrant vous pouvez String to Char puis Char to Int puis Int to Char puis Char to Int [ par gooooo ] Bonjour, Je débute avec Visual C++ et j'avoue que j'ai un peu de mal. Habituellement j'utilise Qt et la il y a du changement. Voici le problème : J Modification d'une fonction [ par amouna22528013 ] Salut, Je veux modifier une fonction de lecture d'un fichier des données en entrée. La fonction ne peut lire que des données codées en numéros [quote] Page TCC [ par MCI ] D'abord, un petit coucou de bonne année à Bruno (Brunews), que je n'ai pas vu depuis le 4.12, chez Microsoft. Ce message, c'est pour signaler que j' executer un progrmme avec en arguments des int ? [ par cool2source ] Bonjour, J'ai réalisé un programme qui trace des rectangles. Aucun problème les rectangles sont bien rectangles lorsqu'ils apparaissent. Au lancement


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales