【发布时间】:2010-09-03 01:34:17
【问题描述】:
我正在努力将 POST 数据发送到服务器并接收正确的响应。我从使用 setHTTPBody 开始,但是当我没有获得某些 POST 数据的正确服务器响应并且我读到 setHTTPBody 在早期 iOS 版本上存在内存泄漏时,我转向了 setHTTPBodyStream。问题是 setHTTPBodyStream 导致错误 - “操作无法完成。对等方重置连接”。
代码如下:
NSMutableURLRequest * request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"secret but correct url goes here"] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0];
[request setHTTPMethod: @"POST"];
[request setHTTPBodyStream: [NSInputStream inputStreamWithData: [[NSString stringWithFormat:@"username=%@&password=%@&score=%i",[(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)ogl_view->username, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease],[(NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)text_field.text, NULL, CFSTR("?=&+"), kCFStringEncodingUTF8) autorelease],ogl_view->score[0]] dataUsingEncoding:NSUnicodeStringEncoding]]];
NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest: request delegate:self];
if (connection){
received_data = [[NSMutableData data] retain];
ogl_view->section = CURLING_PROCESS_CREDENTIALS;
}else{
ogl_view->section = CURLING_LOGIN_OR_REGISTER;
UIAlertView *connection_alert = [[UIAlertView alloc] initWithTitle:@"Error" message: @"Can't connect to server" delegate:self cancelButtonTitle:@"Close" otherButtonTitles: nil];
[connection_alert show];
[connection_alert release];
}
我可以验证服务器是否正常,并且在我尝试使用网络浏览器时可以正常工作。
有人可以让我正确地使用 HTTP 和 POST 方法发送数据吗?
感谢您的帮助。
【问题讨论】:
标签: iphone objective-c ios