Des*_*ond 21 iphone xcode nsurlconnection nsurlrequest ios
我想知道如何仅从URL请求异步获取返回值1或0 ....
目前我是这样做的:
NSString *UTCString = [NSString stringWithFormat:@"http://web.blah.net/question/CheckQuestions?utc=%0.f",[lastUTCDate timeIntervalSince1970]];
NSLog(@"UTC String %@",UTCString);
NSURL *updateDataURL = [NSURL URLWithString:UTCString];
NSString *checkValue = [NSString stringWithContentsOfURL:updateDataURL encoding:NSASCIIStringEncoding error:Nil];
NSLog(@"check Value %@",checkValue);
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是它阻止了我的主线程,直到我从URL得到回复,我该如何设置它以便它将在另一个线程而不是主线程中执行?
编辑:ANSWER 我最终用这个来调用我的功能,它运行良好:)
[self performSelectorInBackground:@selector(shouldCheckForUpdate) withObject:nil];
Run Code Online (Sandbox Code Playgroud)
Adi*_*mro 28
你可以使用NSURLConnection
课程
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:url]];
[[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
Run Code Online (Sandbox Code Playgroud)
并使用其委托方法处理其响应和错误.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
Run Code Online (Sandbox Code Playgroud)
您可以找到NSURLConnection的实现
编辑:虽然NSURLConnection
是苹果提供的更推荐的放置URL请求的方式.但我发现AFNetworking
库非常节省时间,易于实现,并且作为第三方实现非常简单而且简单.你应该试一试.
Mau*_*lik 24
试试这个 :
.H:
NSMutableData *responseData;
Run Code Online (Sandbox Code Playgroud)
.M:
- (void)load
{
NSURL *myURL = [NSURL URLWithString:@"http://www.example.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
[responseData release];
[connection release];
[textView setString:@"Unable to fetch data"];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"Succeeded! Received %d bytes of data",[responseData
length]);
NSString *txt = [[[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding] autorelease];
}
Run Code Online (Sandbox Code Playgroud)
使用NSURLConnection
并提出您的要求.然后,您可以使用NSURLConnection的方法启动同步或异步连接:
同步加载数据
+ sendSynchronousRequest:returningResponse:error:
Run Code Online (Sandbox Code Playgroud)
异步加载数据
+ connectionWithRequest:delegate:
– initWithRequest:delegate:
– initWithRequest:delegate:startImmediately:
– start
Run Code Online (Sandbox Code Playgroud)
NSURLConnection
在Apple Developer API Reference中查看该类.
归档时间: |
|
查看次数: |
53379 次 |
最近记录: |