Tôi thực hiện một số tải xuống lớn. Tôi bắt đầu tải xuống đang được kết nối với 3G, tất cả đều ổn. Sau đó, tôi chuyển sang kết nối WiFi, nhưng yêu cầu trả về một ngoại lệ thời gian chờ. Tôi đã sử dụng thư viện HttpClient. Tôi đã thực hiện một cơ chế thử lại, vì vậy, khi yêu cầu trả về một ngoại lệ, nó ngủ trong 0,5 giây và cố gắng thực hiện lặp đi lặp lại. Tôi hy vọng rằng, sau khi kết nối với WiFi, yêu cầu Http có thể thực thi. Nhưng có vẻ như phương thức thực hiện Http trả về một đáp ứng null, tất cả thời gian sau đó. Rất lạ, nếu tôi lại chuyển sang 3G, phương thức thực hiện trả về một phản hồi tốt. Có ai có thể giúp tôi không :) ?HttpClient time out khi thay đổi từ 3G sang WiFi
Trả lời
Đầu tiên, có vẻ như nó có thể thuận tiện hơn khi sử dụng DownloadManager cho các tệp lớn - nó xử lý thử lại và mọi thứ.
Đối với HttpClient - nó được biết là có một số vấn đề, nhưng tôi không chắc chắn nếu bạn va vào một trong số họ hoặc chỉ cần bỏ qua một cái gì đó. Nó không được dùng như Gingerbread, bạn có thể muốn thử HttpUrlConnection thay vào đó, nó được cho là có ít vấn đề hơn HttpClient.
Ngoài ra, khi chuyển đổi giữa WIFI và kết nối di động, HttpClient có thể cần phải được khởi tạo lại hoàn toàn, có http range header để cho máy chủ biết byte bạn muốn tiếp tục tải xuống. Nhưng một lần nữa, tôi khuyên bạn nên dùng thử DownloadManager, nó có thể giúp bạn tiết kiệm rất nhiều thời gian.
Vấn đề của tôi là tương tự, nhưng tôi không tải xuống tệp lớn, chỉ những tệp nhỏ và tôi bị ngoại lệ khi thay đổi từ 3G sang Wifi hoặc ngược lại. Tôi cũng đã cố gắng để tắt quản lý kết nối sau mỗi yêu cầu và tái tạo httpclient, nhưng vẫn còn cùng một vấn đề tồn tại. – Niko
Ngoài ra khi sử dụng WebView để mở url, trước tiên với Wifi nó hoạt động, sau đó khi thay đổi sang 3G, ứng dụng của tôi không thể mở url thứ hai với WebView, vì vậy đây có vẻ là lỗi nền tảng. – Niko
Hmm, vâng, với WebView cũng không thể sử dụng 3G, điều này có vẻ nghiêm trọng hơn nhiều so với việc sử dụng sai HttpClient. WebView sử dụng gọi gốc để tải url. Hm ... để chắc chắn - 3G có sẵn trên gói dữ liệu của bạn không? :) Bạn có thể tải bất kỳ thứ gì trên 3G với ứng dụng trình duyệt của bên thứ ba hoặc ứng dụng bên thứ ba không? Ngoài ra còn có cấu hình để được kiểm tra (Acess Point, vv). Tôi đoán là thiết bị có thể nghĩ rằng nó được kết nối với internet di động nhưng lưu lượng thực tế có thể không đi qua nếu AP không đúng hoặc nhà điều hành của bạn không cho phép 3G. –
Đây có thể là sự cố định tuyến: khi chuyển đổi giữa các loại mạng khác nhau thường là địa chỉ IP cục bộ và, quan trọng hơn, bảng định tuyến cục bộ thay đổi do cổng khác đang được sử dụng. Điều này có nghĩa rằng các gói đi lại tốt giữa máy khách và máy chủ sẽ không đạt được bất kỳ đích nào sau khi thay đổi mạng, nếu chúng được gửi cùng một tuyến đường. Nhiều khả năng việc triển khai ứng dụng khách của bạn phải được thông báo về sự thay đổi hoặc thậm chí khởi động lại hoàn toàn, để chiến lược định tuyến được khởi động lại.
Nếu tài liệu của các thành phần triển khai bạn sử dụng không tiết lộ bất cứ điều gì bạn có thể cố gắng theo dõi việc này bằng cách sử dụng gói sniffer như wireshark. Thông thường các gói chạy vào niết bàn hiển thị dễ dàng ở đó.
- 1. Android: Chuyển đổi 3G sang WIFI khi đang ở giữa ứng dụng = mất kết nối mạng
- 2. Python ftplib time out
- 3. Ruby Net :: HTTP time out
- 4. Thay đổi ngày khi chuyển đổi từ XMLGregorianCalendar sang Lịch
- 5. Chuyển đổi từ UTC sang US Mountain time với DST
- 6. HttpClient trên Android: NoHttpResponseException thông qua UMTS/3G
- 7. Làm cách nào để buộc kết nối GPRS thay vì 3G hoặc Wifi?
- 8. Bật giao diện wifi và 3G đồng thời trên Android
- 9. Thông báo trên iPhone khi thay đổi mạng wifi
- 10. iPhone hoạt động loại mạng (2G, 3G, WiFi)
- 11. Lợi ích khi thay đổi từ JRun 4.0 sang Tomcat?
- 12. Time out trang trí trên một hàm multprocessing
- 13. sử dụng 3g cho internet khi kết nối với adhoc wifi (sử dụng API riêng)
- 14. thay đổi anotations từ JBoss Seam sang CDI (JEE6)
- 15. làm thế nào để time-out một cách duyên dáng khi tải với python
- 16. Nhận 3 chương trình phát sóng Khi mạng được chuyển từ GPRS sang Wifi
- 17. jQuery thay đổi div background-image với fadeIn/Out
- 18. Tệp out-out của PowerShell: ngăn các thay đổi mã hóa
- 19. kết nối wifi thay đổi hành động trong android
- 20. cách kiểm tra mạng wifi hoặc 3g có sẵn trên thiết bị Android
- 21. Phát hiện nếu kết nối là wifi, 3G hoặc EDGE trong android?
- 22. Có thể kết nối wifi và 3G cùng một lúc trên Android không?
- 23. Thay đổi Từ Phối cảnh sang Ma trận Chỉnh hình
- 24. Làm thế nào để phát hiện xem người dùng có 3G/Wifi trước khi thực hiện kết nối URL?
- 25. Làm thế nào để tắt/bật mạng, chuyển sang Wifi trong trình giả lập Android?
- 26. Trong iOS, cách phát hiện từ Javascript (web) thiết bị được kết nối qua 3G hoặc Wifi?
- 27. VI (VIM): xóa/thay đổi từ phải sang trái?
- 28. Thay đổi phông chữ từ Roboto sang Roboto bình thường
- 29. Tại sao thay đổi từ WPF sang Silverlight 4?
- 30. ứng dụng không thành công trên Emulator để khởi động do time-out
trên thực tế, nó trả về một ngoại lệ Socket, không phải là một phản hồi null –