我有一个程序,它调用 Web 服务帖子来更新信息,但在 DNS 解析失败的情况下,该应用程序只需等待大约 30 秒,错误就会返回,然后再继续正常执行。
注意:如果 Web 服务发布失败,应用程序仍然可以正常运行,因此我不想等待响应。只需发布并继续,无论何时错误都会回来。
下面是返回错误 410 的发送方法。
// Sends the request via HTTP.
-(void)send {
// If we don't have a handler, create a default one
if(handler == nil) {
handler = [[SoapHandler alloc] init];
}
// Make sure the network is available
if([SoapReachability connectedToNetwork] == NO) {
NSError* error = [NSError errorWithDomain:@"SoapRequest" code:400 userInfo:[NSDictionary dictionaryWithObject:@"The network is not available" forKey:NSLocalizedDescriptionKey]];
[self handleError: error];
}
// Make sure we can reach the host
if([SoapReachability hostAvailable:url.host] == NO) {
NSError* error = [NSError errorWithDomain:@"SoapRequest" code:410 userInfo:[NSDictionary dictionaryWithObject:@"The host is not available" forKey:NSLocalizedDescriptionKey]];
[self handleError: error];
}
// Output the URL if logging is enabled
if(logging) {
NSLog(@"Loading: %@", url.absoluteString);
}
// Create the request
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL: url];
if(soapAction != nil) {
[request addValue: soapAction forHTTPHeaderField: @"SOAPAction"];
}
if(postData != nil) {
[request setHTTPMethod: @"POST"];
[request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField: @"Content-Type"];
[request setHTTPBody: [postData dataUsingEncoding: NSUTF8StringEncoding]];
if(self.logging) {
NSLog(@"%@", postData);
}
}
// Create the connection
conn = [[NSURLConnection alloc] initWithRequest: request delegate: self];
if(conn) {
receivedData = [[NSMutableData data] retain];
} else {
// We will want to call the onerror method selector here...
if(self.handler != nil) {
NSError* error = [NSError errorWithDomain:@"SoapRequest" code:404 userInfo: [NSDictionary dictionaryWithObjectsAndKeys: @"Could not create connection", NSLocalizedDescriptionKey,nil]];
[self handleError: error];
}
}
}
如有任何建议,我们将不胜感激!
提前致谢。 :)
最佳答案
您可能想要添加一些返回。我相信,如果主机无法访问,您就不想继续进行连接尝试。
此外,如果您的某个操作阻塞了线程,您可能希望在后台队列中运行整个发送方法。
关于ios - 如何让我的应用程序继续运行而不是等待 DNS 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698872/