/ / Pobieranie przekierowanego adresu URL przed testem POST - java, post, streaming, httpurlconnection

Pobieranie przekierowanego adresu URL przed testem POST - java, post, streaming, httpurlconnection

Mam kod, który wykonuje POST do adresu URL. Kod używa setFixedLengthStreamingMode ponieważ z góry zna długość POST. Mam sytuację, w której w niektórych przypadkach adres URL może zostać przekierowany na coś innego, ponieważ tryb przesyłania strumieniowego jest włączony; nie jest w stanie śledzić przekierowania. Czy jest jakiś sposób na sprawdzenie przed opublikowaniem danych, aby sprawdzić, czy adres URL jest przekierowywany, czy nie? Czy też myślę w złym kierunku?

Odpowiedzi:

1 dla odpowiedzi № 1

Ogólnie nie, nie ma. Jednak w normalnym przypadku korzystania z Internetu po żądaniu POST wykonanym z formularza przesyłania zawsze powinieneś otrzymać przekierowanie zgodnie z najlepszymi praktykami, ale nie jest to gwarantowane. Na przykład może wykonać żądanie, jeśli dane są podobne, a nie zrobić, jeśli jest to coś innego. Zawsze może zawieść z błędem.

W niektórych przypadkach ograniczonego użycia może istnieć pewna logika, która jest zawsze przestrzegana, ale wtedy jest to sprawa indywidualna.

Od dokumentacja:

Gdy włączone jest przesyłanie strumieniowe danych wyjściowych, uwierzytelnianiei przekierowanie nie może być obsługiwane automatycznie. Zgłoszony zostanie wyjątek HttpRetryException podczas czytania odpowiedzi, jeśli uwierzytelnianie lub przekierowanie są wymagany. Ten wyjątek można uzyskać w celu uzyskania szczegółowych informacji o błędzie.

Tak więc przekierowanie nie będzie obsługiwaneautomatycznie i chociaż nie możesz wcześniej sprawdzić przekierowania, możesz złapać wyjątek i samodzielnie wykonać na nim kroki.