| Termin | Definicja |
|---|---|
| payload przesyłany w nieczytelnym formacie | Payload w nieczytelnym formacie utrudnia diagnostykę integracji i wymusza dodatkowe przekształcenia po stronie odbiorcy. Payload jako dane przekazywane między systemamiPayload to właściwa treść komunikatu przesyłanego pomiędzy aplikacjami, urządzeniami albo usługami. W żądaniu HTTP może znajdować się na przykład w treści żądania POST lub PUT, a w odpowiedzi jest częścią danych zwracanych przez serwer. Sam termin nie określa formatu danych. Payload może być zapisany jako tekst JSON, XML, CSV, formularz typu application/x-www-form-urlencoded albo jako dane binarne. O tym, jak odbiorca powinien odczytać zawartość, informują zwykle nagłówki protokołu, przede wszystkim Content-Type oraz opcjonalnie parametr charset. Określenie „payload przesyłany w nieczytelnym formacie” nie musi oznaczać, że dane są zaszyfrowane. Nieczytelność może wynikać z użycia kodowania binarnego, kompresji, serializacji obiektów, kodowania Base64, błędnego zestawu znaków lub braku informacji o strukturze komunikatu. Szyfrowanie transportowe HTTPS chroni dane podczas przesyłania, ale po poprawnym odebraniu payload powinien być możliwy do przetworzenia przez uprawnioną aplikację. Jeżeli po stronie odbiorcy widać przypadkowe znaki, ciąg znaków zakodowany w Base64 albo nierozpoznawalne bajty, trzeba ustalić, jaki etap przetwarzania zastosował nadawca. Skąd bierze się nieczytelność treści komunikatuCzęstą przyczyną jest rozbieżność między rzeczywistym formatem a deklaracją w nagłówku. Przykładowo nadawca może wysłać dokument JSON, ale oznaczyć go jako application/octet-stream, czyli ogólny strumień danych binarnych. Odbiorca nie powinien wtedy automatycznie zakładać, że może potraktować treść jako zwykły tekst. Podobny problem występuje, gdy dokument zapisano w UTF-16, a program odczytuje go jako UTF-8. W efekcie pojawiają się nieprawidłowe znaki, dodatkowe bajty zerowe albo błąd dekodowania, mimo że sama treść jest poprawna. Inny przypadek dotyczy wieloetapowego kodowania. Payload może zostać najpierw skompresowany, następnie zakodowany Base64 i umieszczony w polu JSON. Odbiorca musi wykonać operacje w odwrotnej kolejności: odczytać strukturę JSON, zdekodować Base64, rozpakować dane, a dopiero potem zinterpretować właściwy format. Jeżeli nadawca używa nagłówka Content-Encoding: gzip, odbiornik powinien uwzględnić kompresję wskazaną w tym nagłówku. Bez znajomości kolejności operacji sam podgląd ciągu znaków nie pozwala wiarygodnie określić, czy dane są uszkodzone. Jak ustalić strukturę payloadu podczas diagnostykiDiagnostykę należy rozpocząć od zebrania pełnego komunikatu, a nie tylko jego fragmentu widocznego w interfejsie aplikacji. Warto zapisać metodę HTTP, adres żądania bez poufnych parametrów, kody odpowiedzi, nagłówki Content-Type i Content-Encoding oraz dokładny rozmiar treści. Następnie porównuje się te informacje z dokumentacją integracji albo z przykładem komunikatu, który odbiorca powinien zaakceptować. Przydatne jest sprawdzenie, czy treść zaczyna się od charakterystycznych znaków lub bajtów, na przykład od klamry dla typowego obiektu JSON albo od sygnatury właściwej dla konkretnego formatu pliku. Sama sygnatura nie zastępuje jednak walidacji całej zawartości. Jeżeli payload jest tekstowy, należy zweryfikować poprawność składni parserem odpowiednim dla deklarowanego formatu. Dla JSON trzeba sprawdzić między innymi prawidłowe cudzysłowy, przecinki, typy wartości oraz zgodność nazw pól z umową interfejsu. Dla XML istotne są poprawne elementy, kodowanie i przestrzenie nazw. Jeżeli treść jest binarna, analizuje się ją jako sekwencję bajtów i ustala zastosowany serializer, kompresję albo protokół. W logach warto zapisywać identyfikator żądania, długość payloadu, wynik dekodowania i nazwę błędu, ale nie należy bez potrzeby umieszczać całej treści komunikatu, ponieważ może zawierać dane aplikacyjne lub tokeny dostępowe. Znaczenie poprawnego formatu dla serwisu komputeraNa laptopie lub komputerze PC objawem problemu z payloadem może być nieudane logowanie do aplikacji, brak synchronizacji, błąd importu danych, pusta lista wyników albo komunikat o nieprawidłowej odpowiedzi serwera. Przyczyną nie zawsze jest awaria sprzętu. Trzeba odróżnić błąd transportu, błąd dekodowania i błąd interpretacji już poprawnie odczytanej treści. Pomagają w tym testy na tej samej wersji aplikacji, porównanie komunikatu poprawnego i błędnego oraz sprawdzenie, czy problem występuje tylko w jednym programie, po zmianie sieci lub po aktualizacji komponentu odpowiedzialnego za komunikację. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów stacjonarnych PC i ich podzespołów, a w ramach diagnostyki można ustalić, czy źródłem problemu jest konfiguracja aplikacji, lokalny komponent komunikacyjny, niezgodność kodowania lub uszkodzenie systemu. W przypadku powtarzalnego błędu warto przygotować godzinę wystąpienia, nazwę programu, wersję używanego oprogramowania, kod błędu oraz zanonimizowane nagłówki i próbkę payloadu. Takie informacje ułatwiają rozdzielenie problemu po stronie komputera od niezgodności po stronie zewnętrznej integracji. |