objective-c - Cocoa:NSURLConnection 不尝试 HTTP 请求

标签 objective-c cocoa

我在 iPhone 应用程序中使用 NSURL、NSURL[Mutable]Request、NSURLConnection 取得了巨大的成功。当尝试编译一个独立的 Cocoa 应用程序时,10 行程序发出一个简单的 HTTP 请求,编译器错误或警告为零。该程序编译正常,但从未向我的 Web 服务器发出 HTTP 请求(我正在运行 tcpdump 并并行查看 Apache 日志)。当我在 iPhone 应用程序中运行非常相似的代码时,基本上复制/粘贴就像那样邪恶,一切都很好。

为了简单起见,我将 NSURLConnection 委托(delegate)中的“obj”声明代码保留在这段代码片段之外。我还将以下内容传递给 gcc:

gcc -o foo foo.m -lobjc -framework cocoa

感谢您的任何见解。

#import <Cocoa/Cocoa.h>

int 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] 运行];

但是请注意,这会阻塞并且实际上可能永远不会返回。在调用它之前,如果您希望您的代码在后台实际执行某些操作,您可以添加一个计时器 :) 请参阅有关 NSRunLoop 的文档以了解更多使用方法。

关于objective-c - Cocoa:NSURLConnection 不尝试 HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/267163/

相关文章:

objective-c - 如何以编程方式替换使用绑定(bind)的 NSTextField 中的 "No Selection"占位符?

cocoa - Interface Builder 不显示我的一些资源图像

cocoa - 在沙盒应用程序中读取桌面图片

ios - 制作一个 UIImageView 全屏

ios - UILabel 未使用自动布局调整大小

cocoa - Xcode Cocoa 中的垃圾收集在哪里?

xcode - 在 AppleScriptObjC 中从面板制作工作表

ios - UIAlertController 无法满足约束

ios - 将 ViewController 镜像到外部显示器

iphone - 将联系人从一个源复制到另一个源