2014-02-19 125 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