Cách nào là cách thanh lịch nhất để nhận dữ liệu từ API JSON truyền trực tuyến bằng AFNetworking? AFNetworking cung cấp hỗ trợ tuyệt vời để nhận dữ liệu không trực tuyến từ các API JSON, nhưng tôi không thể tìm thấy bất kỳ ví dụ nào về truyền trực tuyến JSON.Chạy JSON với AFNetworking trên IOS
Trả lời
AFNetworking không có hoạt động JSON kiểu SAX trực tuyến được tích hợp sẵn, nhưng nó nên được chuyển tiếp thẳng để tạo của riêng bạn.
- Tạo một lớp con của
AFJSONRequestOperation
- Sử dụng
outputStream
tài sản của các hoạt động trong quá trình khởi để móc nó lên đến một phân tích cú pháp JSON có hỗ trợ phân tích cú pháp SAX-phong cách (chẳng hạn như Yajl). Trình phân tích cú pháp sẽ đọc dữ liệu và xây dựng đối tượng JSON như trong số - Treo tài sản
responseJSON
để đọc đối tượng được lưu trong bộ lọc từ trình phân tích cú pháp - ... hoặc tùy thuộc vào cách bạn đang phát trực tuyến, bạn có thể cần để thêm một thuộc tính mới định nghĩa một khối để thực hiện khi các đối tượng JSON mới trở lại (ví dụ:
setReceivedJSONBlock:((^)(void (id JSON))block
). Khối này có thể sẽ được kích hoạt bằng các phương thức ủy nhiệm được gửi từ trình phân tích cú pháp (ví dụ:<YAJLParserDelegate> -parserDidEndDictionary:
).
Nếu bạn có thể làm việc này, tôi sẽ khuyến khích bạn xuất bản và chia sẻ điều này với người khác. Tôi nghĩ điều này có thể hữu ích đối với một vài người.
Cảm ơn câu trả lời, tôi sẽ thử phương pháp được đề xuất! – akisaarinen
Tính năng này sẽ không hoạt động dễ dàng với AFNetworking. Đầu tiên, phương thức kết nối của AFURLConnectionOperation: didReceiveData: không được triển khai đúng. Nó chỉ hoạt động đối với các luồng luôn sử dụng TẤT CẢ byte do kết nối cung cấp. Điều này bao gồm các luồng tệp và luồng bộ nhớ. Tuy nhiên, để "giao diện" API luồng của trình phân tích cú pháp với NSURLConnectionDelegate, một phương pháp phức tạp hơn là cần thiết liên quan đến một số "hàng đợi đồng bộ" như một phương tiện để truyền dữ liệu và luồng được ghép nối có bộ đệm kích thước cố định. – CouchDeveloper
Bạn có thể giải thích thêm một chút về điều này không? Làm cách nào để kết nối outputStream với trình phân tích cú pháp JSON? –
- 1. AFNetworking không tương thích với iOS 4.3
- 2. AFNetworking ngừng làm việc dưới iOS 6
- 3. Sự cố khi truy xuất JSON với AFNetworking
- 4. Tải xuống tệp/hình ảnh với AFNetworking trong iOS?
- 5. Thêm thông số để yêu cầu với AFNetworking
- 6. afnetworking - exc_bad_access trong startMonitoringNetworkReachability
- 7. Nhiều yêu cầu với AFNetworking
- 8. AFNetworking: enqueueBatchOfHTTPRequestOperations vấn đề với kết thúc khối
- 9. AFNetworking Post Form-Data
- 10. Bắt chạm khi khởi chạy trên iOS
- 11. POST jpeg tải lên với AFNetworking
- 12. lỗi chọn không được nhận dạng với NSJSONSerialization + AFNetworking
- 13. AFNetworking + cancelAllRequests
- 14. Yêu cầu AFNetworking và POST
- 15. Gửi yêu cầu HTTP POST trong iOS với JSON
- 16. AFNetworking (AFJSONRequestOperation) chuyển thành AFHTTPClient
- 17. Gửi nhiều hình ảnh với AFNetworking
- 18. Sự kiện đã gửi của máy chủ với AFNetworking
- 19. AFNetworking setAuthenticationChallengeBlock
- 20. iOS - hình ảnh tải lên với ImageShack JSON API
- 21. Thư viện để nén PNG thời gian chạy trên iOS
- 22. Các khối thành công/thất bại AFNetworking được gọi trên luồng chính?
- 23. AFNetworking and Cookies
- 24. Chạy máy chủ web trên thiết bị iOS
- 25. JSON hợp lệ, nhưng 'Lỗi ca cao 3840' từ AFNetworking/NSJSONSerialization
- 26. Yêu cầu POST và PUT AFNetworking
- 27. AFNetworking POST tới REST webservice
- 28. AFNetworking gửi mảng theo tham số JSON của yêu cầu bài
- 29. Chuyển sang AFNetworking từ ASIHTTPRequest - Vấn đề với ASINetworkQueue
- 30. Yêu cầu JSON nối mạng với boolean
Bạn đã bao giờ nhận được một cái gì đó như thế này làm việc? –
Theo như tôi nhớ, tôi đã quản lý để thực hiện một ví dụ streaming JSON rất đơn giản, nhưng ngay sau đó, tôi quan tâm đến dự án IOS mà tôi cần cho (ví dụ: một khách hàng của CampFire) đã giảm xuống. Không có gì hoàn thành không may đã từng bước ra khỏi điều này. :) – akisaarinen
Đủ công bằng. Cảm ơn các cập nhật! –