Asihttprequest始终采用空值

时间:2011-04-25 07:58:02

标签: iphone objective-c 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,messagebody,receipientnumber,sendermobilenumber)采用了空值。我在提出请求之前就已经完成了所有这些价值观,他们似乎很好。

注意:这不会一直发生。它几次发生。此外,只有在我尝试回复收件箱中的现有邮件时才会发生这种情况。当我尝试发送新消息时,它不会发生。

我在这里做错了吗?

1 个答案:

答案 0 :(得分: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]);
}