Skocz do zawartości
Yourek

Delphi i wysyłanie dokumentów metodą POST i GET

Rekomendowane odpowiedzi

Witam,

Mam Delphi XE i przyszło mi się zderzyć z tematem wysyłania dokumentów wykorzystując udostępnione API i metody POST i GET.  Przyznam, że temat dla mnie jest zupełnie nowy i nie wiem czy Delphi XE w ogóle obsługuje takie metody? Czy do tego wykorzystuje się pakiet Indy?

Ogólnie temat dotyczy Elektronicznych Tytułów Wykonawczych. http://www.is-szczecin.pl/egzadm/inf_stronyinstrukcji/system_eTW.php

Opisują tam interfejs API https://etw-tst.mf.gov.pl/ai/  i inne potrzebne do tego szczegóły. Nigdy jednak z czymś takim się nie zetknąłem stąd moje pytanie czy w Delphi XE da się to obsłużyć? Jeśli tak to macie może jakieś tutoriale, przykłady?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Indy może być. Potrzebujesz modułu http. Całość tak właściwie sprowadza się do wysłania tekstu zawierającego odpowiednie słowa kluczowe, więc równie dobrze możesz użyć gniazd sieciowych.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ok. Sprawdziłem na miarę moich możliwości wysyłanie za pomocą Indy i komponentu TIdHTTP w ten sposób:

idhttp := TIdHttp.Create(self); 
Params := TIdMultiPartFormDataStream.Create;
Params.AddFile('plik', 'mojplik.zip');

res := idhttp.Post('http://mojastrona.pl/', Params);

Params.Free;
idhttp.Free;

Tylko, że ja na swojej stronie mam plik index.php z formularzem, który przyjmuje ten wysyłany plik i zapisuje na serwerze, natomiast w tej specyfikacji jest podana scieżka https://etw-tst.mf.gov.pl/ai/api/v1/etw-documents/

Domyślam się, że w moim kodzie zamiast http://mojastrona.pl ma znaleźć się właśnie ten adres etw-tst.mf.gov.pl ale wątpie aby można było wysłać normalnie zwykły plik XML. W ich instrukcji jest jakieś takie przetworzenie żądania ale nie mam pojęcia co z tym zrobić. Jakieś pomysły?

POST /api/v1/etw-documents
{
  "etwDocument": {
  "encryption": {
  "encryptionKey": {
  "key":
  "pHlGeultDGNZQoKV4RlVjor14ypRIF6O0ZGjlGCMqojYSuEqYo5awZlWU8OmvCEgQuwiT1AXLLJ3r0fR5eiKg
  lJ+/UF3dQCpfgamr1DU2ThVsa2goFyKhNvMSohQI1gV3a4Tm9YAUXlLQkEu9QC+NkB6jIfB/dG91P4DrjXxEf/
  ptAJIXN7L9/3GUiV1onhP2JHTRgxreil1vtZEazXXyFwe2ZGh1stpgpoDFlRee+Ss3WFX6nuq+QWSiIdFPwA9p
  PozrGbDZS0Jf9Qwdzs/i2UCpkP8qOplk20dBF+S2/T1b41B+GSGIrN5LL9UxePluoA1+v7Uy9nNMCi/R4MODA=
  =",
  "algorithm": "RSA",
  "mode": "ECB",
  "padding": "PKCS#1",
  "encoding": "Base64"
  },
  "encryptionDetails": {
  "aes": {
  "block": "16",
  "padding": "PKCS#7",
  "size": "256",
  "mode": "CBC",
  "aesIV": {
  "bytes": "16",
  "encoding": "Base64",
  "iv": "JUnzAQXNexe7Dg0u9lwOUg=="
  }
}
}
},
  "document": {
  "formType": {
  "code": "EZW",
  "version": "V1"
  },
    "formContent": {
    "encoding": "Base64",
    "content":
    "PERva3VtZW50PgoJPE9waXNEb2t1bWVudHUgLz4KCTxTaWduYXR1cmUgSWQ9IklEMSIgLz4KPERva3VtZW50P
    g=="
    }
}
}
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Najprościej będzie po prostu złożyć sobie ten ciąg znakowy i wrzucić zakodowane w base64 te trzy zmieniające się rzeczy. Jak chcesz trudniej, to poszukaj modułu do robienia jsona.

W sumie tylko jedna rzecz będzie się zmieniała, resztę możesz wrzucić na sztywno.

Jak tam masz klucz do szyfrowania, to jeszcze w indy zobacz czy jest odpowiedni moduł.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się

  • Ostatnio przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...