在我的應用程序中,我想使用NSURLConnection
類。那麼請告訴我如何使用這個?這包含了很多委託方法,請告訴我如何使用它們?如何使用NSUrlConnection從Web獲取數據?
0
A
回答
12
啓動使用
self.responseData = [NSMutableData data];
NSURL *url = [NSURL URLWithString:@"http://sampleurl/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection autorelease];
連接,您可以看看在connectionDidFinishLoading委託方法
#pragma mark - NSURLConnection Delegate Methods
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[self.responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[self.responseData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Connection failed: %@", [error description]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//Getting your response string
NSString *responseString = [[NSString alloc] initWithData:self.responseData encoding:NSUTF8StringEncoding];
self.responseData = nil;
}
響應爲了您的內存泄漏問題
聲明在接口文件
響應數據NSMutableData *_responseData;
財產如下
@property (nonatomic, retain) NSMutableData *responseData;
和合成它
@synthesize responseData = _responseData;
不要釋放它的任何地方(我們使用便捷的構造函數分配)。我們已經在connectionDidFinishLoading方法中將它設置爲nil。
4
在iOS 5中和OS X 10.7或更高版本,可以異步使用加載數據如下:
NSURL *url = [NSURL URLWithString:@"http://sampleurl/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue]
completionHandler: ^(NSURLResponse * response, NSData * data, NSError * error) {
NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse*)response;
if(httpResponse.statusCode == 200) {
//your code to handle the data
}
}
];
或者,如果你想同步做到這一點(不推薦,如果要加載大量的數據,因爲它會掛應用程序)(在OS X 10.2+和iOS 2.0+提供)
NSURL *url = [NSURL URLWithString:@"http://sampleurl/"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
NSURLResponse * response;
NSError * error;
NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
+0
一個很好的簡單的答案,做了我想要的一切。謝謝! – SilentLupin
相關問題
- 1. 從對象獲取數據,使用NSURLConnection
- 2. 使用阻塞或類似的方式從NSURLConnection獲取數據
- 3. 如何從Web服務獲取數據?
- 4. 如何使用NSURLSession從Web服務獲取數據?
- 5. 如何使用角度從Web端點獲取數據?
- 6. 如何使用javascript從nodejs web服務獲取數據?
- 7. 如何從使用PHP的Web服務獲取XML數據?
- 8. Php Web服務。如何從數據庫中獲取數據?
- 9. NSURLConnection獲取URL
- 10. 如何使用javascript從mysql數據庫中獲取數據?
- 11. 如何使用Python訪問並從數據庫獲取數據?
- 12. 如何使用TSQL從遠程數據庫獲取數據?
- 13. 如何使用列名從數據表中獲取數據
- 14. 如何使用Code Igniter從MySQL數據庫獲取數據?
- 15. 如何使用draft-js從數據庫獲取/保存數據
- 16. 如何使用類對象從數據庫中獲取數據?
- 17. 如何使用Web :: Scraper獲取數據屬性的值?
- 18. 如何在backbone.js中使用web服務獲取數據對象
- 19. 如何使用NSURLConnection?
- 20. 通過Angularjs從web api獲取數據
- 21. Javascript從Web服務獲取數據
- 22. Xamarin從Web API獲取數據
- 23. 如何從Web服務讀取數據?
- 24. 如何在iPhone中使用JSON從Web服務器獲取數據
- 25. 如何使用REST風格的Web服務從BO獲取報表數據?
- 26. 如何從服務器獲取php Web api json的數據到使用angularJs?
- 27. 我應該如何使用我從Web服務器獲取的數據,在Android
- 28. 使用Camel從Web服務獲取數據
- 29. 使用Qooxdoo從Web服務獲取數據時遇到問題
- 30. 無法使用angularjs從web api獲取數據
如何釋放responsedata –
它設置爲nil在connectionDidFinishLoading(self.responseData =零),並釋放在dealloc方法的實例變量。 ([responseData release];) – sElanthiraiyan
我在self.responseData = [NSMutableData data]中得到了100%的內存泄漏問題; –