gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:59:19 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com