ASIHttpRequest带有body参数的DELETE方法

时间:2011-06-27 23:04:21

标签: iphone ios asihttprequest

我为Iphone使用ASIHttpRequest(v.1.8-95),并希望与一些正文数据一起创建同步DELETE请求。我走了这条路:

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

虽然我在客户端通过

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

该方法已正确设置为“DELETE” 在服务器端收到了“POST”请求!

如果我省略

[request appendPostData: ..]

在服务器端收到正确的DELETE)

那我的要求有什么问题? 感谢任何解决方案。

问候

creator_11

2 个答案:

答案 0 :(得分:7)

搜索asihttprequest小组(http://groups.google.com/group/asihttprequest/search?group=asihttprequest&q=delete&qt_g=Search+this+group)会显示一些相关帖子,包括建议的解决方法:

  

根据您的请求调用buildPostBody   在你填充身体之后,但是   在设置请求方法之前。

答案 1 :(得分:2)

HTTP动词和用法不能只是混合和匹配。好的,他们可以,但您必须更改服务器以支持您的非标准使用。要删除DELETE should use the URI of the resource,就是这样。没有POST参数,没有附件。

如果真的你想要发送一些额外的数据和删除,你可以在请求的标题中设置它(addRequestHeader:value:),服务器端将该信息拉出来,但如果可以,请避免。原因是,DELETE应该删除它的URI引用的一个“东西”。如果服务器应用程序的业务逻辑说删除应该影响其他一些对象(例如级联删除),那么客户端应用程序应该不知道。

你能解释一下你在执行DELETE时尝试POST的内容,也许我可以提供另一种解决方案。