NSURL,NSURL [Mutable] Request,NSURLConnection和我的iPhone应用程序取得了巨大的成功.当试图编译一个独立的Cocoa应用程序,10行程序来做一个简单的HTTP请求时,没有编译器错误或警告.程序编译得很好,但HTTP请求永远不会发送到我的Web服务器(我正在运行tcpdump并且并行查看Apache日志).当我在iPhone应用程序中运行非常相似的代码时,基本上复制/粘贴就像那样邪恶,所有都是金色的.
为了简单起见,我将代码中的'obj'声明的代码保存在NSURLConnection中.我也将以下内容传递给gcc:
gcc -o foo foo.m -lobjc -framework cocoa
感谢您的任何见解.
#importint main (int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; NSString * urlstr = @"http://tmp/test.php"; [NSApplication sharedApplication]; NSObject *obj = [[NSObject alloc] init]; NSURL *url = [NSURL URLWithString: urlstr]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; if([request isKindOfClass:[NSMutableURLRequest class]]) NSLog(@"request is of type NSMutableURLRequest"); [request setHTTPMethod:@"GET"]; [request setCachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData]; NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:obj startImmediately:YES]; if(connection) NSLog(@"We do have a connection."); [pool release]; return 0;
}
另一张海报几乎为你回答了这个问题,但我想我会添加一些东西.
首先,你真的不需要链接到Cocoa,只需链接到Foundation框架就可以了.此外,由于您不需要连接到Window Server,因此可以删除[NSApplication sharedApplicaiton]调用.如果您只想要一个简单的控制台测试应用程序,请使用您现在拥有的并在[pool realease]调用之前添加它:
[[NSRunLoop currentRunLoop] run];
但请注意,这将阻止,实际上可能永远不会返回.在调用此函数之前,如果您希望代码在后台实际执行某些操作,则可以添加计时器:)有关使用此方法的更多方法,请参阅NSRunLoop上的文档.