我为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
答案 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的内容,也许我可以提供另一种解决方案。