2014-02-19 127 views
0

我有一个使用PUT方法从URL默认/ isUserInternational/id/1请求的Web服务,并且在请求主体中应该附加isInternational = 1。使用ASIHTTP的PUT请求?

我正在使用以下代码,但仍然无法发出PUT请求。

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"default/isUserInternational/id/%@", @"5"]]; 
self.asiFormDataRequest = [[ASIFormDataRequest alloc] initWithURL:url]; 
[self.asiFormDataRequest setDelegate:self]; 
[self.asiFormDataRequest setTimeOutSeconds:REQUEST_TIMEOUT]; 
[self.asiFormDataRequest setPostFormat:ASIMultipartFormDataPostFormat]; 
[self.asiFormDataRequest setRequestMethod:@"PUT"]; 
[self.asiFormDataRequest addRequestHeader:@"Accept" value:@"application/json"]; 
[self.asiFormDataRequest addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"]; 

//[self.asiFormDataRequest addRequestHeader:@"1" value:@"isInternational"]; 
//[self.asiFormDataRequest appendPostData:[@"1" dataUsingEncoding:NSUTF8StringEncoding]]; 

[self.asiFormDataRequest addPostValue:@"1" forKey:@"isInternational"]; 
[self.asiFormDataRequest startSynchronous]; 

请帮忙!提前致谢。

回答

0

虽然如果你使用appendPostData:或appendPostDataFromFile:它不会工作。此外,如果您使用了它们,它将视为文档中提到的POST请求。/appendPostDataFromFile:/ setPostBody:

http://allseeing-i.com/ASIHTTPRequest/How-to-use#setting_request_headers)当您使用appendPostData

//默认变得POST。

因此,我张贴正确的代码已经为我工作,希望它可能有助于其他人!

NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"default/isUserInternational/id/%@", @"5"]]; 
self.asiFormDataRequest = [[ASIFormDataRequest alloc] initWithURL:url]; 
[self.asiFormDataRequest setDelegate:self]; 
[self.asiFormDataRequest setTimeOutSeconds:REQUEST_TIMEOUT]; 
//[self.asiFormDataRequest setPostFormat:ASIMultipartFormDataPostFormat]; 
[self.asiFormDataRequest addRequestHeader:@"Accept" value:@"application/json"]; 
[self.asiFormDataRequest addRequestHeader:@"Content-Type" value:@"application/x-www-form-urlencoded"]; 
[self.asiFormDataRequest addRequestHeader:@"1" value:@"isInternational"]; 
[self.asiFormDataRequest setRequestMethod:@"PUT"]; 

[self.asiFormDataRequest addPostValue:@"1" forKey:@"isInternational"]; 
[self.asiFormDataRequest startSynchronous]; 

并记住删除行[self.asiFormDataRequest setPostFormat:ASIMultipartFormDataPostFormat];因为它使您的请求被视为POST。这是我的愚蠢的错误!

0

如果要通过PUT发送数据,请使用appendPostData:appendPostDataFromFile:

+1

谢谢你的回答,但它不适合我。请参考我的答案,因为我纠正了我那里愚蠢的错误。 – happycoder