2011-12-13 39 views
6

Làm cách nào để tạo yêu cầu không chứa trường tiêu đề? Các yêu cầu đang được gửi đến việc triển khai máy chủ của riêng tôi từ đầu, điều này không quan tâm đến các trường tiêu đề. Yêu cầu nhiều nhất sẽ chỉ chứa nội dung bài đăng. Hãy cho tôi biết nếu tôi thiếu một cái gì đó hợp lý.Làm cách nào để xóa tiêu đề trong NSMutableURLRequest?

Vui lòng không cho tôi biết về ASIHTTPRequest. Cảm ơn bạn.

+0

Bạn đã bao giờ tìm thấy câu trả lời cho điều này chưa? Tôi đang cố gắng để loại bỏ tất cả các tiêu đề và các phản ứng ở đây dường như không làm việc ngày hôm nay – Jan

Trả lời

1
  1. Tại sao không chỉ bỏ qua chúng, nếu bạn kiểm soát việc triển khai máy chủ?

  2. [request setAllHTTPHeaderFields:[NSDictionary dictionary]] hoạt động không?

  3. Nếu # 2 không hoạt động, hãy thử tạo lớp con của riêng bạn luôn trả về một từ điển trống từ phương pháp allHTTPHeaderFieldsnil từ phương pháp valueForHTTPHeaderField:. Nhưng NSURLConnection có thể sao chép yêu cầu của bạn, vì vậy bạn có thể phải ghi đè lên copyWithZone:.

+0

# 1 Mỗi byte lưu vấn đề cho việc thực hiện này. –

+0

# 2 sẽ không hoạt động vì nó không ghi đè từ điển nội bộ. Nó chỉ ghi đè các phím, nếu có. Tôi sẽ xem xét phân lớp và cho bạn biết nếu điều đó có ích hay không. –

9

Như tôi muốn loại bỏ tiêu đề cụ thể trên một NSMutableURLRequest, Tôi vừa mới phát hiện ra rằng gọi setValue: forHTTPHeaderField: với một giá trị nil thực sự loại bỏ nó.

Nó không được tài liệu của Apple, nhưng nó có vẻ khá hợp lý.

+4

Chỉ dành cho những người đã tìm thấy trang này bằng google - Nó không hoạt động nữa (Tôi đang sử dụng 10,8 sdk). Nếu bạn đặt nó thành 0, User-Agent sẽ không bị thay đổi. – wecing

+0

Nó hoạt động cho tôi trên iOS 6.1 SDK với tiêu đề tùy chỉnh (Tôi không kiểm tra Tác nhân người dùng). –

0

tôi thấy rằng đối với một số lĩnh vực tiêu đề ("User-Agent" là một trong số họ), thiết lập các giá trị tiêu đề để nil sử dụng

[request addValue:nil forHTTPHeaderField:@"User-Agent"]; 

không thực sự loại bỏ các lĩnh vực tiêu đề, nhưng thay vì đặt nó thành giá trị mặc định!

Nếu bạn muốn thực sự loại bỏ các nội dung, nó là đủ thiết lập các giá trị cho một chuỗi rỗng với

[request addValue:@"" forHTTPHeaderField:@"User-Agent"]; 
1

Đối với tôi mã

[request addValue:@"" forHTTPHeaderField:@"User-Agent"]; 

chỉ thêm một chuỗi rỗng thay vì làm sạch Tác nhân người dùng. Thay vào đó, hãy sử dụng setValue để sửa lỗi:

[request setValue:@"" forHTTPHeaderField:@"User-Agent"]; 
+0

Chỉ cần lưu ý rằng đây là câu trả lời đúng. addValue sẽ thêm giá trị mới vào giá trị trước đó, được phân tách bằng dấu phẩy. setValue sẽ thay thế giá trị trước đó. –

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