Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Отправка данных на Сервер Соап   Найти похожие ветки 

 
Bellf ©   (2009-12-03 16:31) [0]

Есть SOAP сервер на Java
Затянул WSDL файл через WSDL Importer

   property articleId: WideString read FarticleId write FarticleId;
   property branchCode: Integer read FbranchCode write FbranchCode;
   property commission: TXSDecimal read Fcommission write Fcommission;
   property competitionIds: ArrayOfString read FcompetitionIds write FcompetitionIds;
   property competitionPrices: ArrayOfDecimal read FcompetitionPrices write FcompetitionPrices;
   property extraCharge: TXSDecimal read FextraCharge write FextraCharge;
   property price: TXSDecimal read Fprice write Fprice;
   property priceDate: TXSDateTime read FpriceDate write FpriceDate;
   property primeCost: TXSDecimal read FprimeCost write FprimeCost;
   property primeCostTotal: TXSDecimal read FprimeCostTotal write FprimeCostTotal;
   property remainder: TXSDecimal read Fremainder write Fremainder;
   property reserve: TXSDecimal read Freserve write Freserve;
   property sales: TXSDecimal read Fsales write Fsales;
   property tonnage: TXSDecimal read Ftonnage write Ftonnage;
   property turnover: TXSDecimal read Fturnover write Fturnover;

Есть два динамических массива competitionIds,competitionPrices

В Тексте инициализирую и заполняю свойства
var
wsd    :PriceRpcPortType;
data   :PriceStruct;
dec    :TXSDecimal;
datdec :TXSDateTime;
arof   :ArrayOfString;
ardec  :ArrayOfDecimal;
i      :integer;
begin
data := PriceStruct.Create;
data.articleId := "F7070921-7A56-4F5B-BE98-1B1AA72A1F02";
data.branchCode:= 1;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.commission := dec;
dec.Free;
SetLength(arof,3);
arof[0]:="6665F08F-BA2D-4BA6-BE8E-67209672FB6E";
arof[1]:="488BE5E4-148E-4A58-BD9B-2EBE14C014DC";
{for i:=0 to High(arof)-1 do begin
 arof[i]:="6665F08F-BA2D-4BA6-BE8E-67209672FB6E";
 Memo1.Lines.Add(IntToStr(i));
end;}
data.competitionIds:=arof;
SetLength(ardec,3);
dec  := TXSDecimal.Create;
dec.XSToNative("5000");
ardec[0]:= dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("5100");
ardec[1]:= dec;
dec.Free;
data.competitionPrices:= ardec;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.extraCharge := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("5100");
data.price := dec;
dec.Free;
datdec  := TXSDateTime.Create;
datdec.XSToNative("2009.12.02");
data.priceDate := datdec;
datdec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.primeCost := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.primeCostTotal := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.remainder := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.reserve := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.sales := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("10.543");
data.tonnage := dec;
dec.Free;
dec  := TXSDecimal.Create;
dec.XSToNative("0");
data.turnover := dec;
dec.Free;
wsd :=GetPriceRpcPortType();
wsd.savePrice(data);
// savePrice(data);
{ wsd := GetPriceRpcPortType();
with wsd do begin   savePrice(data); end;}


при попытки выполнить функцию отправлющую данные программа вылетает с криком Acsses Violation at adress

wsd :=GetPriceRpcPortType();
wsd.savePrice(data);

Немогу разобраться почему


 
clickmaker ©   (2009-12-03 16:36) [1]

видимо, wsd = nil


 
Bellf ©   (2009-12-03 17:35) [2]

До этого выполнял код в маленькой тестовой процедуре
Все Срабатывало.

wsd := GetPriceRpcPortType();
with wsd do begin plus2(xsf); end;


 
brother ©   (2009-12-04 05:46) [3]

> wsd :=GetPriceRpcPortType();

где это описано? и что возвращает?

постоянно создавать
> dec  := TXSDecimal.Create;

и уничтожать

> dec.Free;

чтобы выполнить операцию типа:

> dec.XSToNative("0");

имхо не кошерно...
далее:

> data := PriceStruct.Create;

а где уничтожение? не нашел...
это на пока...
зы код - тихий ужОс...


 
Сергей М. ©   (2009-12-04 08:19) [4]


> data.commission := dec; // разберись что здесь происходит. Если простое копирование указателя, то
> dec.Free; // вот тебе и грабли


 
Bellf ©   (2009-12-04 13:51) [5]

Да спасибо все дело было в очистке.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.101 c
15-1341211017
KilkennyCat
2012-07-02 10:36
2013.03.22
Понедельничная задачка :)


15-1344643133
wl
2012-08-11 03:58
2013.03.22
творение? потом...


2-1332225008
ixen
2012-03-20 10:30
2013.03.22
Обращение из потока


15-1354100495
O'ShinW
2012-11-28 15:01
2013.03.22
Запретить всем прятать таскбар


6-1265872619
Den
2010-02-11 10:16
2013.03.22
No route to host