Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2015, 15:15   #1
delphi159
Подтвердите свой е-майл
 
Регистрация: 27.01.2015
Сообщений: 28
По умолчанию как передать на Soap-сервер параметры в формате Datetime

Требуется получить от сервера полученные мной от конкретного поставщика накладные в интервале времени. Без временного фильтра правильно работает, а если с фильтром, тогда не могу правильно передать дату не в формате `Datetime`, не в формате `XSDatetime`:

Код:
  procedure TForm1.GetBuyerWaybillsClick(Sender: TObject);
            var WBS:WayBillsSoap;
              ToServ:get_buyer_waybills;
              FromServ:get_buyer_waybillsResponse;
              i:integer;
              DT: TDateTime;
              XSDT: TXSDateTime;
            begin
            
         TRY
    WBS := GetWayBillsSoap(false,'',nil);
    ToServ:=get_buyer_waybills.Create;
    
    fmt.ShortDateFormat:='dd/MM/yyyy';
    fmt.DateSeparator  :='/';
    fmt.LongTimeFormat :='hh:mm:ss';
    fmt.TimeSeparator  :=':';
    //StrDate:='01/09/2015';
    StrDate:='01/09/2015 01:04:56';
    DT:=StrToDateTime(StrDate,Fmt);
    
    ToServ.su:='BIDZINA01:201947554';
    ToServ.sp:='mari555';
    ToServ.seller_tin:='401964148';
    //DateTimeToXSDateTime(DT);
    ToServ.create_date_s.AsDateTime:=DT;
    ToServ.create_date_e.AsDateTime:=DT;
    
    
    FromServ:=WBS.get_buyer_waybills(ToServ);
    
    Memo.Text := FromServ.get_buyer_waybillsResult.XMLNode.Xml;
    
      finally
        FreeAndNil(ToServ);
        FreeAndNil(FromServ);
        THTTPRIO(wbs).Free;
      end;
    end;
ругается на операторах присваивания:
Код:
ToServ.create_date_s.AsDateTime:=DT;
ToServ.create_date_e.AsDateTime:=DT;
выводит:
Код:
Access violation... write of address 0*0000000c
и при закрытии формы ещё:
Код:
an unexpected memory leak has ocurred. The unexpected small block leaks are: 
13-20 bytes:TXSDateTime*1,
29-36 bytes: EAccessViolation*2, 
69-76 bytes: UnicodeString*2. 
173-188 bytes: Unicodestring*2.
Описание функции такое (пока request, потом response):


Код:
SOAP 1.2

The following is a sample SOAP 1.2 request and response. The placeholders shown need to be replaced with actual values.

POST /WayBillService/WayBillService.asmx HTTP/1.1
Host: services.rs.ge
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <get_buyer_waybills xmlns="http://tempuri.org/">
      <su>string</su>
      <sp>string</sp>
      <itypes>string</itypes>
      <seller_tin>string</seller_tin>
      <statuses>string</statuses>
      <car_number>string</car_number>
      <begin_date_s>dateTime</begin_date_s>
      <begin_date_e>dateTime</begin_date_e>
      <create_date_s>dateTime</create_date_s>
      <create_date_e>dateTime</create_date_e>
      <driver_tin>string</driver_tin>
      <delivery_date_s>dateTime</delivery_date_s>
      <delivery_date_e>dateTime</delivery_date_e>
      <full_amount>decimal</full_amount>
      <waybill_number>string</waybill_number>
      <close_date_s>dateTime</close_date_s>
      <close_date_e>dateTime</close_date_e>
      <s_user_ids>string</s_user_ids>
      <comment>string</comment>
    </get_buyer_waybills>
  </soap12:Body>
</soap12:Envelope>

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <get_buyer_waybillsResponse xmlns="http://tempuri.org/">
      <get_buyer_waybillsResult>xml</get_buyer_waybillsResult>
    </get_buyer_waybillsResponse>
  </soap12:Body>
</soap12:Envelope>

То есть, мы должны передавать параметры `create_date_s` и `create_date_e` типа `datetime` (или, может быть, в формате `XSDatetime` - оба пробовал), а сервер возврашает в формате `XSDatetime` (`<CREATE_DATE>2012-04-03T12:23:52</CREATE_DATE>`):



Код:
    <WAYBILL>
        <ID>395946</ID><TYPE>2</TYPE>
        <CREATE_DATE>2012-04-03T12:23:52</CREATE_DATE> 
        <BUYER_TIN>201249558</BUYER_TIN>
        <BUYER_NAME>Фирма 1</BUYER_NAME>
        <SELLER_NAME>Фирма 2 +</SELLER_NAME>
        <SELLER_TIN>401964148</SELLER_TIN>
        ...
        <SELLER_ST>0</SELLER_ST></WAYBILL>
Ссылка на проект:

http://f-bit.ru/693399
https://mega.nz/#!fAk00KZK!wRdwCYcMV...6NQ4NtWStq_lCQ

Последний раз редактировалось delphi159; 01.10.2015 в 15:48.
delphi159 вне форума Ответить с цитированием
Старый 01.10.2015, 16:43   #2
delphi159
Подтвердите свой е-майл
 
Регистрация: 27.01.2015
Сообщений: 28
По умолчанию

По-моему узнал причину-create_date_s имеет тип datetime и при создании не присвоено значение(Nil), но если так тогда как и где инициализировать?

Последний раз редактировалось delphi159; 01.10.2015 в 17:08.
delphi159 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP: как передать параметры через консоль? three_cats PHP 5 04.04.2013 20:10
Как передать параметры в SWFUpload Marsik PHP 1 31.07.2010 13:38
Как передать в поток параметры? И как из потока параметры достать? Anekdot Общие вопросы Delphi 2 19.02.2010 22:40
Как передать параметры функции в ДЛЛ????? Zerone Общие вопросы Delphi 3 01.06.2009 09:27
Как програмно передать параметры на сервер Sniper Работа с сетью в Delphi 2 11.09.2007 10:05