2010-07-09 27 views
9

Tôi đang làm việc trên ứng dụng iPad có máy chủ HTTP được nhúng trên cổng cao và tôi đang tải các trang từ máy chủ HTTP này bằng cách sử dụng a UIWebView.Cho phép UIWebView tải http: // localhost: cổng/đường dẫn URI mà không cần kết nối Internet

Đối với chức năng của ứng dụng, điều quan trọng là thao tác này hoạt động khi không có kết nối mạng.

Các UIWebView đang tải URL có dạng http://localhost:port/path

Khi tôi tắt Wi-Fi trên iPad của tôi và chạy ứng dụng, đại biểu các 's UIWebView nhận được một thông điệp webView:didFailLoadWithError: với đối tượng NSError sau:

Error Domain=NSURLErrorDomain Code=-1009 UserInfo=0x1b4a50 "no Internet connection" 

Rõ ràng SDK đang được thông minh và phát hiện rằng nó không có kết nối Internet, nhưng bạn có thể truy cập 127.0.0.1/localhost/::1 mà không cần kết nối Internet. Tôi sẽ báo cáo lỗi cho Apple nhưng tôi đang yêu cầu ở đây để được tư vấn về cách giải quyết có thể có cho lỗi SDK này trong thời gian chờ đợi.

Xin lưu ý: việc thay đổi kiến ​​trúc của ứng dụng không nằm trong phạm vi của câu hỏi này.

+0

Tại sao không tải các trang bằng phương thức 'loadHTMLString: baseURL:' của UIWebView? – lucius

+1

Tôi không thể thực sự đi sâu vào chi tiết (vì vậy câu cuối cùng của câu hỏi), nhưng có nhiều lý do tại sao tôi không thể sử dụng phương pháp đó liên quan đến việc xử lý các tài nguyên tập lệnh, phong cách và hình ảnh bên ngoài mà trang tham chiếu và không dễ xác định trước khi bắt đầu tải trang ban đầu. Máy chủ web nhúng hoạt động như một loại máy chủ proxy cho các tài nguyên mà nó có được thông qua một phương tiện khác với truy cập mạng Wi-Fi/3G. – jbg

Trả lời

7

Bạn có thể muốn điều tra xác định lược đồ của riêng mình và triển khai nó với NSURLProtocol thay vì chạy máy chủ HTTP. Điều này sẽ cho phép bạn xử lý việc tải các URL mà không phải triển khai giao thức HTTP và sẽ gặp vấn đề này với SDK nơi giao thức HTTP bị lỗi sớm nếu bạn không có kết nối mạng.

+0

Cảm ơn bạn. Đây chính xác là những gì tôi đang tìm kiếm, và thậm chí tôi có thể có lớp con 'NSURLProtocol' của tôi đáp ứng với các giao thức' http' và 'https', ghi đè hiệu quả hành vi HTTP nền tảng mặc định. Tuyệt diệu. – jbg

+1

Dường như vấn đề chỉ với điều khiển 'UIWebView' và KHÔNG ở điều khiển mới hơn -' WKWebView'. Kiểm soát sau này cho phép truy cập tệp máy chủ cục bộ http mà không cần xác thực kết nối/lỗi internet. Tôi nhận thấy hành vi này trong ứng dụng của tôi cho một video đã tải xuống. Ứng dụng của tôi phát '

Các vấn đề liên quan