1
我有這樣的URL的Web服務的Web服務的請求:http://webservice.com/?log=1
製作爲在Objective-C日誌記錄
我想對這個URL在Objective-C的請求,使得Web服務可以記錄這一事實。我不在乎將任何東西傳遞給Web服務,也不關心它如何響應請求。
什麼是最有效的方法來實現這一目標?
我有這樣的URL的Web服務的Web服務的請求:http://webservice.com/?log=1
製作爲在Objective-C日誌記錄
我想對這個URL在Objective-C的請求,使得Web服務可以記錄這一事實。我不在乎將任何東西傳遞給Web服務,也不關心它如何響應請求。
什麼是最有效的方法來實現這一目標?
最簡單的方法是使用NSURLConnectionsendSynchronousRequest:returningResponse:error:方法。
例如
NSURLResponse *response;
[NSURLConnection sendSynchronousRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: @"http://webservice.com/?log=1"]] returningResponse: &response error: NULL];
使用此方法的不利之處在於它會在執行URL請求時掛起您的應用程序。要異步執行此請求,您需要使用connectionWithRequest:delegate:方法。由於你需要提供一個委託(在你的情況下,一個什麼都不做),這會變得更復雜一些。
例如
[[NSURLConnection connectionWithRequest: [NSURLRequest requestWithURL: [NSURL URLWithString: @"http://webservice.com/?log=1"]] delegate:self] retain];
...
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
[connection release];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
[connection release];
}
有關使用NSURLConnection的更多示例,請參閱SimpleURLConnections。
UPDATE:根據David的評論刪除了可選的delagate方法。
優秀的迴應Shane。不幸的是它需要是異步的,所以我只需要處理一些空的委託方法。那個我能接受。再次感謝。 – 2010-09-03 12:03:16
原來NSURLConnection使用非正式協議,所有方法都是可選的,所以我只需要包含'connection:didFailWithError:'和'connectionDidFinishLoading:'。 – 2010-09-03 18:35:37
我真的知道它就是這樣,但是我找不到任何文件是關於什麼是可選的,哪些不是。也許我看起來不夠堅強!我會更新我的答案。謝謝。 – 2010-09-03 19:07:41