我有一个简单的GET
请求,我试图在我的macOS应用程序中运行。但是我一直收到以下错误:
找不到具有指定主机名的服务器。
我尝试从以下位置下载JSON数据的URL是:
https://suggestqueries.google.com/complete/search?client=safari&q=mercedes
如果我在浏览器或在线API测试人员网站(例如Hurl.it)中测试它,请求正常。然后会自动下载JSON文件。
但是,通过我的macOS应用程序运行请求不起作用。这是我的代码:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://suggestqueries.google.com/complete/search?client=safari&q=mercedes"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
[request setHTTPMethod:@"GET"];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
[[session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"Data: %@", data);
NSLog(@"Response: %@", response);
NSLog(@"Error: %@", error);
}] resume];
以下是完整的错误日志:
dnssd_clientstub ConnectToServer:connect() - >没有尝试:1 dnssd_clientstub ConnectToServer:connect() - >没有尝试:2 dnssd_clientstub ConnectToServer:connect() - >没有尝试:3 dnssd_clientstub ConnectToServer:connect()失败
路径:/ var / run / mDNSResponder套接字:6 Err:-1 Errno:1操作不 允许2017-10-27 09:58:31.610493 + 0100搜索建议 [] nw_resolver_create_dns_service_locked DNSServiceCreateDelegateConnection失败:ServiceNotRunning(-65563) TIC TCP Conn失败[1:0x600000164080]:10:-72000 Err(-65563) 任务< 12212C3B-8606-49C2-BD72-AEBD575DB638>。< 1>。 HTTP加载失败 (错误代码:-1003 [10:-72000]) 任务 < 12212C3B-8606-49C2-BD72-AEBD575DB638>。&LT 1为卤素;完成错误 - 代码: -1003
数据:( null) 回复:( null) 错误:错误域= NSURLErrorDomain代码= -1003"具有指定的服务器 无法找到主机名。" UserInfo = {NSUnderlyingError = 0x60400004fa20 {错误 Domain = kCFErrorDomainCFNetwork Code = -1003"(null)" 的UserInfo = {_ kCFStreamErrorCodeKey = -72000, _kCFStreamErrorDomainKey = 10}},NSErrorFailingURLStringKey = https://www.suggestqueries.google.com/complete/search?client=safari&q=mercedes, NSErrorFailingURLKey = https://www.suggestqueries.google.com/complete/search?client=safari&q=mercedes, _kCFStreamErrorDomainKey = 10,_kCFStreamErrorCodeKey = -72000,NSLocalizedDescription =具有指定主机名的服务器无法 找到。}
我做错了什么?这只是一个简单的GET
请求,我不明白为什么数据不会加载。
谢谢你的时间,Dan。
答案 0 :(得分:12)
我弄清楚出了什么问题,即使我已将Allow Arbitrary Loads
设置为YES
,但这还不足以启用网络请求。
Xcode 9
中有一个名为App Sandbox
的新设置,可以阻止传入/传出网络连接!我必须关闭此设置,然后所有网络请求都开始工作。
答案 1 :(得分:2)
答案 2 :(得分:1)
答案 3 :(得分:0)
请尝试以下代码
@property (nonatomic, strong) NSURLConnection *connection;
NSMutableString *urlString = [NSMutableString stringWithString:BASE_URL];
[urlString appendFormat:@"%@",apiName]; //apiName —> Webservice Name
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
[request setValue:@"gF!DeEfFrjqaAaD$gH#Mn@w(z" forHTTPHeaderField:@"PC-API-KEY"]; //Optional Parameter pass if required key
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setHTTPMethod:@"POST"]; //if your required Get than [request setHTTPMethod:@"GET"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[parameterDict toJSON]];
[request setTimeoutInterval:45.0];
self.connection =[[NSURLConnection alloc] initWithRequest:request delegate:self];
if (self.connection) {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
self.downLoadedData = [NSMutableData data];
}