2010-11-08 52 views
0

我想使用下面的代碼從服務器獲取數據。UrlConnection Iphone

+ (NSString *) getData:(NSString *)methodName parameters:(NSDictionary *) parameters error:(NSError **)error 
{ 
NSString *body = [UdoziProxy getRequestBody:methodName parameters:parameters]; 

NSMutableURLRequest *request = [UdoziProxy createRequest:body]; 

// Send the request . 
NSHTTPURLResponse *urlResponse = nil; 

NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:error]; 

if (responseData == nil || error !=nil) { 

    return nil; 

} 

return [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease]; 
} 

它在服務器正在運行時工作正常,但當我故意停止服務器時,responseData對象仍然有值並且不爲零。如何處理連接丟失或服務器故障的情況?

回答

0

您需要在NSURLRequest對象上設置cache policy。如果同步API仍然沒有兌現,那麼您需要切換到使用異步API並在收到緩存請求對象時將其丟棄。如果不起作用,那麼也許你的網絡有一個透明的代理,它爲你做了一些緩存。

+0

我的緩存策略設置爲NSURLRequestReloadIgnoringCacheData,但沒有奏效。 – 2010-11-08 11:08:05

+0

@Mo Agh:我添加了更多選項供您嘗試。 – 2010-11-08 11:12:02

+0

事情是我需要同步發送請求 – 2010-11-08 11:51:42

0

你必須實現在

NSURLConnection的代表,你可以得到失敗狀態中 以下代表

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ 

responseData =零 }

你有使收到的數據無值

也可以安全到 獲取數據在

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

{}

這表明連接完成