gpt4 book ai didi

objective-c - 从 Objective-C 发送消息并获取返回值?

转载 作者:行者123 更新时间:2023-12-03 17:36:53 24 4
gpt4 key购买 nike

我有这个代码

   NSString *tr = [self sendUrl:@"http://google.com/"];

但由于某种原因'tr'在执行后将保持为零。我做错了什么?

发送网址:

- (NSString *)sendUrl:(NSString *) uri {

NSLog(@"Requesting URI 1 ...");

// Prepare URL request to download statuses from Twitter
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:uri]];

NSLog(@"Requesting URI 2 ...");

// Perform request and get JSON back as a NSData object
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSLog(@"Requesting URI 3 ...");

// Get JSON as a NSString from NSData response
NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

NSLog(@"Requesting URI 4 ...");

return json_string;
}

最佳答案

你绝对确定response不为零吗?如果您向 Google 或其他地方发出的请求失败,则响应将设置为 nil,并且错误将包含一些可帮助您诊断错误的信息,因此请进行更改

NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

NSError* error = nil;
NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];
if (response == nil)
{
NSLog(@"request failed with error %@", error);
// any other error handling
}

接下来的事情。 HTTP 消息的默认编码是 ISO-8859-1,而不是 UTF-8。根据Apple的文档,如果编码错误,-initWithData:将返回nil。您可能想要 NISOLatin1StringEncoding。我说“可能”是因为 HTTP 有一种机制可以告诉您它使用的字符编码。我认为这是标题 Content-Transfer-Encoding,但我建议您通过 Google 搜索 HTTP RFC 来确定答案。

最后,如果 json_string 不为 nil,则会泄漏。因为您通过 alloc 获得了它,所以您拥有它,这意味着您需要在从 sendURL 返回它之前自动释放它:最后一点不是问题的原因,它是代码中的一个单独的错误。

关于objective-c - 从 Objective-C 发送消息并获取返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2888654/

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