Tôi đang sử dụng chức năng file_get_contents()
của php để thực hiện yêu cầu HTTP. Để tiết kiệm băng thông, tôi quyết định thêm tiêu đề "Accept-Encoding: gzip"
bằng cách sử dụng stream_context_create()
.Giải nén phản hồi http đã nén gzip
Rõ ràng, file_get_contents()
xuất ra chuỗi được mã hóa gzip vì vậy tôi đang sử dụng gzuncompress()
để giải mã chuỗi được mã hóa nhưng tôi gặp lỗi với dữ liệu được truyền làm đối số.
[...] PHP Warning: gzuncompress(): data error in /path/to/phpscript.php on line 26
Tôi biết có một chức năng có thể giải nén dữ liệu đã giải nén gzdecode()
nhưng nó không được bao gồm trong phiên bản PHP của tôi (có lẽ nó chỉ có sẵn trên SVN).
Tôi biết rằng cUrl giải mã luồng gzip khi đang di chuyển (không có bất kỳ vấn đề nào) nhưng ai đó đã đề xuất tôi sử dụng file_get_contents()
thay vì cUrl.
Bạn có biết cách nào khác để giải nén dữ liệu đã nén trong PHP hoặc tại sao gzuncompress()
xuất ra Cảnh báo không? Thật là vô lý rằng gzuncompress()
không hoạt động như mong đợi.
Ghi chú: Vấn đề chắc chắn về PHP: yêu cầu HTTP được thực hiện cho API Tumblr cung cấp phản hồi được mã hóa tốt.
Bạn có biết tại sao họ lại đề nghị để sử dụng 'file_get_contents' thay của cUrl? – Jonathan
Không, tôi không biết, họ nói "nó tốt hơn". Tôi có thể quay lại cUrl nhưng tôi vẫn tò mò về vấn đề gzuncompress(). –
Có phải vì dữ liệu được mã hóa base64 không? –