Pokusavam da naprvim SOAP Server application (C++ BUILDER 2010) koja salje podatke iz klijent data seta korisniku na udaljenom mestu.
Pokusao sam sa TList i TSOAPDataList da posaljem podatke. Serverska strana se iskompajlira bez gresaka ali na klijentskoj strani se javlja greska.
Kod sa serverske strane
Code:
class TArtikalSet : public TRemotable {
protected:
public:
int ID_ARTIKLA;
String KOD_ARTIKLA;
String ARTIKAL;
int ID_PORESKE_STOPE;
float CENA_SA_PDV;
int GODINA;
String BARKOD;
int ID_JM;
String OPIS_JM;
float PORESKA_STOPA;
int ID_JM_ARTIKLA;
int ID_CENOVNIK;
};
//----------------------------------------------------------
TSoapDataList* TPCSImpl::echoSpisakArtikala(int IDM, int GOD)
{
TDM *TMPDM = new TDM(0);
//TSoapDataList *dl = new TSoapDataList();
TSoapDataList *la = new TSoapDataList;
if(TMPDM->konekcija->Connected == false) TMPDM->konekcija->Connected = true;
TMPDM->cdsartikli->Active = false;
TMPDM->cdsartikli->ParamByName("IDM")->AsInteger = IDM;
TMPDM->cdsartikli->ParamByName("GOD")->AsInteger = GOD;
TMPDM->cdsartikli->Active = true;
if(TMPDM->cdsartikli->RecordCount > 0)
{
while(!TMPDM->cdsartikli->Eof)
{
TArtikalSet *ta = new TArtikalSet();
ta->ID_ARTIKLA = TMPDM->cdsartikli->FieldByName("ID_ARTIKLA")->AsInteger;
ta->KOD_ARTIKLA = TMPDM->cdsartikli->FieldByName("KOD_ARTIKLA")->AsString;
ta->ARTIKAL = TMPDM->cdsartikli->FieldByName("ARTIKAL")->AsString;
ta->ID_PORESKE_STOPE = TMPDM->cdsartikli->FieldByName("ID_PORESKE_STOPE")->AsInteger;
ta->CENA_SA_PDV = TMPDM->cdsartikli->FieldByName("CENA_SA_PDV")->AsFloat;
ta->GODINA = TMPDM->cdsartikli->FieldByName("GODINA")->AsInteger;
ta->BARKOD = TMPDM->cdsartikli->FieldByName("BARKOD")->AsString;
ta->ID_JM = TMPDM->cdsartikli->FieldByName("ID_JM")->AsInteger;
ta->OPIS_JM = TMPDM->cdsartikli->FieldByName("OPIS_JM")->AsString;
ta->PORESKA_STOPA = TMPDM->cdsartikli->FieldByName("PORESKA_STOPA")->AsFloat;
ta->ID_JM_ARTIKLA = TMPDM->cdsartikli->FieldByName("ID_JM_ARTIKLA")->AsInteger;
ta->ID_CENOVNIK = TMPDM->cdsartikli->FieldByName("ID_CENOVNIK")->AsInteger;
la->Add(ta);
TMPDM->cdsartikli->Next();
}
}
//TRemotable *obj = new TRemotable();
//obj->ObjectToSOAP(dl);
return la;
}
class TArtikalSet : public TRemotable {
protected:
public:
int ID_ARTIKLA;
String KOD_ARTIKLA;
String ARTIKAL;
int ID_PORESKE_STOPE;
float CENA_SA_PDV;
int GODINA;
String BARKOD;
int ID_JM;
String OPIS_JM;
float PORESKA_STOPA;
int ID_JM_ARTIKLA;
int ID_CENOVNIK;
};
//----------------------------------------------------------
TSoapDataList* TPCSImpl::echoSpisakArtikala(int IDM, int GOD)
{
TDM *TMPDM = new TDM(0);
//TSoapDataList *dl = new TSoapDataList();
TSoapDataList *la = new TSoapDataList;
if(TMPDM->konekcija->Connected == false) TMPDM->konekcija->Connected = true;
TMPDM->cdsartikli->Active = false;
TMPDM->cdsartikli->ParamByName("IDM")->AsInteger = IDM;
TMPDM->cdsartikli->ParamByName("GOD")->AsInteger = GOD;
TMPDM->cdsartikli->Active = true;
if(TMPDM->cdsartikli->RecordCount > 0)
{
while(!TMPDM->cdsartikli->Eof)
{
TArtikalSet *ta = new TArtikalSet();
ta->ID_ARTIKLA = TMPDM->cdsartikli->FieldByName("ID_ARTIKLA")->AsInteger;
ta->KOD_ARTIKLA = TMPDM->cdsartikli->FieldByName("KOD_ARTIKLA")->AsString;
ta->ARTIKAL = TMPDM->cdsartikli->FieldByName("ARTIKAL")->AsString;
ta->ID_PORESKE_STOPE = TMPDM->cdsartikli->FieldByName("ID_PORESKE_STOPE")->AsInteger;
ta->CENA_SA_PDV = TMPDM->cdsartikli->FieldByName("CENA_SA_PDV")->AsFloat;
ta->GODINA = TMPDM->cdsartikli->FieldByName("GODINA")->AsInteger;
ta->BARKOD = TMPDM->cdsartikli->FieldByName("BARKOD")->AsString;
ta->ID_JM = TMPDM->cdsartikli->FieldByName("ID_JM")->AsInteger;
ta->OPIS_JM = TMPDM->cdsartikli->FieldByName("OPIS_JM")->AsString;
ta->PORESKA_STOPA = TMPDM->cdsartikli->FieldByName("PORESKA_STOPA")->AsFloat;
ta->ID_JM_ARTIKLA = TMPDM->cdsartikli->FieldByName("ID_JM_ARTIKLA")->AsInteger;
ta->ID_CENOVNIK = TMPDM->cdsartikli->FieldByName("ID_CENOVNIK")->AsInteger;
la->Add(ta);
TMPDM->cdsartikli->Next();
}
}
//TRemotable *obj = new TRemotable();
//obj->ObjectToSOAP(dl);
return la;
}
Greska na klijentskoj strani je:
Conversion class TSOAPDataList to SOAP is not suported - SOAP class must be derive from TRemotable.
Na koji nacin mogu poslati podatke iz klijent data seta?