2009-11-03 11 views
17

Mam aplikację napisaną w C++. Ta aplikacja wywołuje określone informacje do skryptu znajdującego się w zdalnej witrynie przy użyciu żądań HTTP POST. Aplikacja wysyła żądania z okresem od kilku sekund do kilku minut.HTTP, 408 Request timeout

Problem polega na tym, że po około pół godzinie pracy bez błędów aplikacja zaczyna otrzymywać błąd 408 żądania czasu z serwera WWW Następnie aplikacja zacznie ponawiać próbę wysłania, ale serwer nadal odpowiada na żądanie 408 żądania.

Ciekawe spostrzeżenie: błąd zniknie po uzyskaniu dostępu do witryny za pomocą przeglądarki, a aplikacja będzie działać przez około 30 minut, po czym problem powróci.

Jaki może być tego powód i czy istnieje jakieś obejście tego problemu?

PS: aplikacja działa na zwykłym komputerze z XP Workstation. Witryna znajduje się na serwerze internetowym GoDaddy.

góry dzięki

+1

Może się okazać, że http://www.checkupdown.com/status/E408.html jest przydatny. –

+0

dziękuję, już przeczytałem tę informację. Ale nie pomogło mi zrozumieć, co się dzieje. Nie ma problemu z połączeniem internetowym, ale problem nadal występuje – CITBL

+0

Nie wiedząc, jakiego oprogramowania hosta używa GoDaddy dla swojej witryny i jak jest skonfigurowany, trudno będzie określić, co się dzieje. Moją sugestią byłoby otwarcie prośby o wsparcie bezpośrednio z GoDaddy. –

Odpowiedz

24

Wiem, że to stary post, ale pomyślałem, że może to pomóc komuś od tego problemu sprawia mi godzinach frustracji.

Wystąpił ten sam problem z serwerem GoDaddy. Moja aplikacja na Androida wysłała żądania POST na serwer i działała zgodnie z oczekiwaniami, ale zacząłem doświadczać błędów 408 żądania przekroczenia limitu czasu po około 30 minutach. Zauważyłem również, że problem zniknął, gdy otworzyłem przeglądarkę i otworzyłem stronę główną (stronę PHP Wordpress) z komputera lub urządzenia z systemem Android. Strona została przetestowana, więc ruch internetowy był minimalny i udało mi się dość łatwo potwierdzić to zachowanie w dziennikach serwera.

Zalogowałem się z pomocą techniczną do GoDaddy, ale podczas gdy ich pracownicy byli responsywni i pomocni, nie dostarczyli żadnych użytecznych informacji w celu wyjaśnienia zachowania.

Byłem jednak w stanie obejść problem, po prostu wykonując fałszywe żądanie GET przed moim żądaniem POST i to "obudził" serwer WWW i odpowiedział na wszystkie kolejne żądania POST.

+1

Wielkie dzięki. Przesłanie danych za pomocą GET zamiast POST rozwiązało dla mnie ten problem. –

+0

W jaki sposób wykonać fałszywe żądanie GET? – Yster

+2

Wygląda na to, że wszystkie POST i brak GET przez trzydzieści minut wyglądają podejrzanie na niektórych agentów monitorowania ruchu, którzy interweniują poprzez resetowanie połączeń. Istnieją produkty, które wysyłają fałszywe resetowania do obu końców, jeśli uważają, że ruch jest złośliwy. Spowoduje to przerwanie połączenia powodującego przekroczenie limitu czasu. – ClearCrescendo