2011-06-27 25 views
6

Tôi sử dụng ASIHttpRequest (v. 1.8-95) cho Iphone và muốn tạo yêu cầu DELETE đồng bộ cùng với một số dữ liệu nội dung. Tôi đi theo cách này:Phương pháp ASIHttpRequest DELETE với thông số cơ thể

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:nsUrl]; 
[request appendPostData:[@"some body params" dataUsingEncoding:NSUTF8StringEncoding]]; 
[request setRequestMethod:@"DELETE"]; 
[request startSynchronous]; 

Mặc dù tôi đã được xác nhận trên các mặt hàng qua

NSLog(@"request: method:%@", request.requestMethod); 

rằng phương pháp này đã được thiết lập một cách chính xác để "DELETE" ở phía máy chủ một "POST" yêu cầu được nhận !

Nếu tôi chỉ bỏ qua

[request appendPostData: ..] 

một đúng DELETE được nhận ở phía máy chủ)

Vậy điều gì xảy ra với yêu cầu của tôi? Cảm ơn mọi giải pháp.

Trân

creator_11

Trả lời

7

Tìm kiếm nhóm asihttprequest (http://groups.google.com/group/asihttprequest/search?group=asihttprequest&q=delete&qt_g=Search+this+group) lần lượt lên một số bài viết có liên quan trong đó có một cách giải quyết đề nghị:

gọi buildPostBody theo yêu cầu của bạn sau khi bạn đã cư cơ thể, nhưng trước khi bạn thiết lập các phương pháp yêu cầu.

+0

cảm ơn cho gợi ý của bạn, bạn cũng gửi cho tôi trong nhóm google này. Như đã đề cập ở đó, giải pháp được đề xuất với câu lệnh "buildPostBody" bổ sung hoạt động tốt và yêu cầu DELETE hiện thành công. cảm ơn. –

2

động từ HTTP và tập quán không thể chỉ được trộn lẫn và phù hợp. OK, họ có thể, nhưng bạn phải thay đổi máy chủ để hỗ trợ việc sử dụng không chuẩn của bạn. DELETE should use the URI of the resource sẽ bị xóa và điều đó. Không có thông số POST, không có tệp đính kèm.

Nếu thực sự bạn muốn gửi một chút dữ liệu thêm cùng với xóa, bạn có thể đặt nó trong các tiêu đề của yêu cầu (addRequestHeader:value:), và phía máy chủ kéo thông tin mà ra, nhưng tránh điều đó nếu bạn có thể. Lý do là, DELETE nên xóa một 'thứ' được gọi là URI. Nếu logic nghiệp vụ của ứng dụng máy chủ nói rằng việc xóa sẽ ảnh hưởng đến một số đối tượng khác (ví dụ như xóa tầng), ứng dụng khách sẽ không biết về điều đó.

Bạn có thể giải thích những gì bạn đang cố gắng ĐĂNG trong khi thực hiện DELETE, có lẽ tôi có thể cung cấp giải pháp thay thế.

+0

như đã đề cập ở trên giải pháp với câu lệnh "buildPostBody" bổ sung hoạt động tốt. Tôi đồng ý rằng từ quan điểm REST thuần túy, bạn đúng và tài nguyên cần xóa sẽ được chỉ định trong URI. Nhưng theo như tôi biết thông số giao thức http. KHÔNG cấm bất kỳ dữ liệu bài đăng nào cùng với yêu cầu DELETE. kể từ khi ứng dụng máy chủ của chúng tôi. không dựa vào REST "thuần túy", nó chỉ yêu cầu một số bộ định danh tài nguyên làm dữ liệu bài đăng mà giờ đây có thể gửi chúng. Tuy nhiên, tôi sẽ thảo luận về vấn đề này với những người chịu trách nhiệm về ứng dụng máy chủ. chỉ để cải thiện thiết kế. Cảm ơn bạn. C. –

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