2012-08-24 23 views
5

Tôi cố gắng để truy cập vào một dịch vụ web, qua một lớp con AFHTTPClient, có một biến chứngAFNetworking AFHTTPClient các loại nội dung khác nhau cho sự thành công và thất bại

Nếu yêu cầu thành công, nội dung được trả về như JSON. Nếu nó không thành công vì lý do nào đó, lỗi từ máy chủ được trả về định dạng dưới dạng XML.

Hiện tại, cách duy nhất tôi có thể giải quyết vấn đề này là không cố gắng sử dụng các yêu cầu XML/JSON RequestOperations cụ thể và hoàn toàn xử lý mọi thứ dưới dạng yêu cầu HTTP đơn giản, sau đó tự phân tích cú pháp theo cách thủ công, tùy thuộc vào phản ứng.

Đáng buồn thay, tôi không có quyền kiểm soát dịch vụ web hoặc tôi đảm bảo rằng nó là tất cả JSON.

Có ai có đề xuất nào tốt hơn để xử lý việc này không?

[EDIT]

Tôi đoán một cách để làm cho nó hơi bụi, sẽ tạo ra một lớp con mới của AFHTTPRequestOperation, mà xử lý việc phát hiện các nội dung gõ nội bộ, và sau đó chuyển trở lại hoặc phân tích cú pháp JSON hoặc một đối tượng GDataXML tùy thuộc vào những gì được trả về từ máy chủ.

Cảm ơn

+0

Điều này tương tự như một số dịch vụ web mà tôi đã sử dụng, JSON thành công và văn bản thuần túy bị lỗi. Điều tốt nhất bạn có thể làm là ném một lỗi lên một loại nội dung khác với JSON hoặc thử và phân tích cú pháp phản hồi cho các lỗi cụ thể. – danielbeard

Trả lời

0

Điều này có thể không phải là giải pháp sạch hoặc tối ưu nhất, nhưng bạn có thể làm một tấm séc với một thư viện JSON hiện có mà phản ứng là trong thực tế JSON hợp lệ. Nếu có, hãy tiếp tục như bình thường; nếu không, hãy xử lý nó bằng giải pháp phân tích cú chạm tay của bạn.

+0

Cảm ơn. Tôi đã xem xét cách tiếp cận đó, nhưng không thích ý tưởng về việc cố gắng phân tích nó chỉ để lấy lại 'thất bại'. Tôi đoán việc phân tích cú pháp có thể có một sớm nếu nó phát hiện không JSON, vì vậy có lẽ không nên quá kém hiệu quả. –

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