2015-09-07 57 views
0

由於64位,我將網絡更新爲2.0。我起初使用AFHTTPRequestSerializer犯了一個錯誤,但服務器端只接受Json。即使我使用了AFHTTPRequestSerializer,但我沒有注意到這個問題,並向公衆發佈了錯誤應用程序。然後我不斷收到用戶抱怨,並以某種方式重建我的設備上的應用程序,本地服務器可以捕捉到我的錯誤內容類型(application/x-www.form-urlencoded)。在我將AFHTTPRequestSerializer更新爲AFJSONRequestSerializer之後,它不能解決問題,但即使用戶更新了應用程序,用戶仍然繼續向服務器發送錯誤的內容類型。新用戶沒有問題,只發生在舊用戶身上。服務器端收到錯誤的內容類型(發送了舊報頭)

這是否與緩存問題有關?

服務器日誌:

10:22:53 AM] Mark 1 contentType is: application/x-www-form-urlencoded,  method is: POST headers are: Connection=keep-alive&Content-Length=1880739&Content-Type=application%2fx-www-form-urlencoded&Accept=*%2f*&Accept-Encoding=gzip%2c+deflate&Accept-Language=en%3bq%3d1&Cookie=ASP.NET_SessionId%3dbby5dlk5afmsnqnoqpprvqpw&Host 


10:04:56 AM]  contentType is: application/json,      method is: POST header is: Connection=keep-alive&Content-Length=40352 4&Content-Type=application%2fjson  &Accept=*%2f*&Accept-Encoding=gzip%2c+deflate&Accept-Language=en%3bq%3d1&Cookie=ASP.NET_SessionId%3dcw3gdkg3sff1f0j50z2rnism&Host 

我的代碼是

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 
manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

AFHTTPRequestOperation *operation = [manager POST:_url parameters:requestParams success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"operation success: %@\n %@", operation, responseObject); 
    NSDictionary *decoded = [self processResponce:responseObject failureBlock:failureBlock]; 

          if (!decoded) return; 
          BOOL containsError = [self checkErrorStatus:decoded failureBlock:failureBlock]; 
          if (containsError) return; 
          successBlock(decoded[@"Data"]); 

} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     failureBlock(FailureTypeUnknown, [error localizedDescription]); 
}]; 

[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { 
progressBlock(bytesWritten,totalBytesWritten,totalBytesExpectedToWrite); 
}]; 
+0

我認爲這是頭緩存問題,以前的用戶不斷髮送較舊的頭文件,任何人都知道如何更新緩存? – Magrider

+0

我做了一些研究後,我認爲這個錯誤是由默認緩存策略引起的。現在我將策略添加到NSURLRequestReloadIgnoringCacheData中,希望它有效。 – Magrider

回答

0

按您的回覆,請設置您的經理的內容類型,如下

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"]; 
+0

它與responseSerializer有關嗎?由於錯誤發生在請求頭上,由於錯誤的內容類型而被服務器端拒絕。感謝您的幫助 – Magrider

+0

是的Magrider,這與responseSerializer有關係。因爲當responseSerializer未收到acceptableContentTypes時發生錯誤。你總是受到Magrider的歡迎。 – JayPathak

相關問題