2012-07-02 72 views
1

在使用第三方API時,我需要取消所有流量,當自定義響應標頭設置爲特定值時。我試圖找到一個很好的地方做這個檢查只有一次在我的代碼(而不是在每個成功/失敗塊,它工作正常)。據我瞭解,這可以通過在我的自定義AFHTTPClient子類中重寫-(void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation來完成,但是當我實現它這樣的:如何在每次使用AFNetworking時讀取響應標題?

-(void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation 
{ 
    NSLog(@"[REQUEST URL]\n%@\n", [operation.request.URL description]); 
    NSLog(@"[RESPONSE HEADERS]\n%@\n", [[operation.response allHeaderFields] descriptionInStringsFileFormat]); 

    [super enqueueHTTPRequestOperation:operation]; 
} 

響應頭是nil。有人可以幫我嗎?

回答

3

在創建操作並將其排入AFHTTPClient時,它們不會有來自服務器的響應 - 當請求操作被實際執行時將被分配。

雖然取消所有流量的要求似乎非正統的(至少如果HTTP的約定外),這是很容易做到:

在你AFHTTPClient子類,添加一個BOOL財產,如果該商店的請求應阻止,然後在enqueueHTTPRequestOperation中使用。然後,覆蓋HTTPRequestOperationWithRequest:success:failure:以執行指定的成功塊以及某些邏輯,以在存在突出響應時設置上述屬性。

+0

由於某種原因,我沒有看到這個答案 - 非常感謝您的幫助,它很好。 – phi

相關問題