Jak radzić sobie z błędem serwera w środku wiadomości Http?Co zrobić z błędami podczas przesyłania strumieniowego treści żądania Http
Zakładając, że już wysłałem nagłówek wiadomości i przesyłam strumieniowo treść wiadomości , co mam zrobić, gdy napotkam nieoczekiwany błąd.
Przyjmuję również, że ten błąd został spowodowany podczas generowania treści, a nie błędu połączenia.
(Mocno) Zmniejsz Kod:
// I can define any transfer encoding or header fields i need to.
send(header); // Sends the header to the Http client.
// Using an iterable instead of stream for code simplicity's sake.
Iterable<String> stream = getBodyStream();
Iterator<String> iterator = stream.iterator();
while (iterator.hasNext()) {
String string;
try {
string = iterator.next();
catch (Throwable error) { // Oops! an error generating the content.
// What do i do here? (In regards to the Http protocol)
}
send(string);
}
Czy istnieje sposób, aby poinformować klienta, że serwer nie powiodło się i powinny albo ponownie lub przerwaniu połączenia lub jestem sool?
Kod jest znacznie uproszczony, ale pytam tylko w odniesieniu do protokołu, a nie dokładnego kodu.
Thank You
Tak, ale chodziło o to, że już wysłałem nagłówek żądania. – user1964161
o_O .. prawdopodobnie nie powinieneś mówić klientowi, że wszystko jest ok, zanim będziesz pewien, że wszystko jest ok. – zzk
To prawda, jednak nie zawsze jest to możliwe.Na przykład: jeśli mam duży plik, który przesyłam i znalazłem plik na moim twardym dysku, wyślę nagłówek "200 OK", a następnie rozpocznij przesyłanie pliku z twardego dysku (bez całego pliku w pamięci głównej) może być błędem podczas odczytu pliku. – user1964161