2010-09-03 32 views
1

我有這樣的URL的Web服務的Web服務的請求:http://webservice.com/?log=1製作爲在Objective-C日誌記錄

我想對這個URL在Objective-C的請求,使得Web服務可以記錄這一事實。我不在乎將任何東西傳遞給Web服務,也不關心它如何響應請求。

什麼是最有效的方法來實現這一目標?

回答

2

最簡單的方法是使用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方法。

+0

優秀的迴應Shane。不幸的是它需要是異步的,所以我只需要處理一些空的委託方法。那個我能接受。再次感謝。 – 2010-09-03 12:03:16

+0

原來NSURLConnection使用非正式協議,所有方法都是可選的,所以我只需要包含'connection:didFailWithError:'和'connectionDidFinishLoading:'。 – 2010-09-03 18:35:37

+0

我真的知道它就是這樣,但是我找不到任何文件是關於什麼是可選的,哪些不是。也許我看起來不夠堅強!我會更新我的答案。謝謝。 – 2010-09-03 19:07:41