2011-04-25 79 views
0

我正在研究一個消息應用程序,其中所有消息都臨時存儲在服務器中。 我有以下代碼。Asihttprequest始終爲空值

NSURL *url = [NSURL URLWithString:[BARAppDelegate returnsendmessageurl]]; 
ASIFormDataRequest *request1 = [ASIFormDataRequest requestWithURL:url]; 
[request1 setPostValue:usernameEmailid forKey:@"username"]; 
[request1 setPostValue:messagebody forKey:@"MessageBody"]; 
[request1 setPostValue:receipientnumber forKey:@"RecipientMobileNumber"]; 
[request1 setPostValue:sendermobilenumber forKey:@"SenderMobileNumber"]; 
[request1 addData:nil withFileName:@"ipodfile.jpg" andContentType:@"application/octet-stream" forKey:@"photos"]; 
[request1 setDelegate:self]; 
[request1 setPersistentConnectionTimeoutSeconds:30]; 
[request1 setShouldAttemptPersistentConnection:YES]; 
[request1 startAsynchronous]; 

當我檢查服務器上的數據庫,令人驚奇地只取空值的所有參數(usernameEmailid,消息體,receipientnumber,sendermobilenumber)。在我提出請求之前,我將所有這些值都填入了數字,他們似乎沒有問題。

注意:這不會一直髮生。它發生幾次。此外,只有當我嘗試回覆收件箱中的現有郵件時纔會發生這種情況。當我嘗試發送新消息時,它不會發生。

我在這裏做錯了什麼?

回答

0

您正在使用和異步連接,並能夠知道出事了就在你身邊,或者你應該實現以下方法在服務器端調用

[request1 startAsynchronous]; 

前補充一點:

[request1 setDidFinishSelector:@selector(uploadRequestFinished:)]; 
    [request1 setDidFailSelector:@selector(uploadRequestFailed:)]; 

而實現這個方法:

- (void)uploadRequestFinished:(ASIHTTPRequest *)request{  
    NSData *responseData = [request responseData]; 

    // Store incoming data into a string 
    NSString *response = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 

    NSLog(@"Server response:%@", response); 
} 

- (void)uploadRequestFailed:(ASIHTTPRequest *)request{ 

    NSLog(@"[TWDEBUG] Error - upload failed: \"%@\"",[[request error] localizedDescription]); 
} 
+0

我想這一點,並沒有發現任何變化。該請求有時會使用空值並將其存儲在服務器中。任何更多的想法.... – Rajashekar 2011-04-25 10:34:08

+0

由於問題apears後,你回覆一條消息,也許你重新分配你的價值觀,並指定他們爲零?這可能嗎?或者您可能沒有在IB中連接您的回覆表單,因此在您請求時您會得到零值。 – Cyprian 2011-04-25 10:38:39