2013-08-16 3 views
1

AFNetworking 및 JSONRequestOperation에 매우 이상한 문제가 있습니다. 나는 순간에 그것을 더 조사하고 있습니다,하지만 지금까지 내가 설명 할 수있는 몇 가지 결과를 가지고 :이상한 AFNetworking 동작 : GET 요청이 오래된 패킷을 가져옵니다.

내가 무엇을 :
1) 건축 Xcode 프로젝트 실행을에 JSONRequestOperation 보내기 내 아이 패드
2)에 내 JSON 객체
4) 내 서버
5) (
) 오프라인 서버에 다시 JSONRequestOperation 보내기 끄기 얻기)
3 서블릿합니다. . .
6) JSONRequestOperation이 "성공"콜백을 호출하고 나에게 동일한 json 객체를 제공합니다. 서버에 응답하지 않기 때문에 "실패"콜백을 호출하는 대신. 보다

더 :
나는 1 시간 뒤 (목적)에 대신 내 서버를 끄지의 아이 패드에 시스템 시간을 압연하고있어 경우 - 나는 상황을 동일한 받고 있어요 : JSONRequestOperation 나에게 동일한 개체를 제공하기 시작하는 시스템 시간이 여전히 올바른 동안 수신되었습니다.

두 번째 경우에는 Wireshark를 시작하고 내 서버에서 내 서버로 GET 요청을 전혀 보지 못했습니다.

동시에
POST 및 DELETE 요청이 올바르게 작동합니다. 서버가 중지되고 시스템 시간이 변경 되어도 실패하면 실패합니다.

+0

응답에 캐시 제어 헤더가 있습니까? 캐시가 유효하면 캐시 된 버전의 응답을 받게됩니다. 덕분에 –

답변

0

AFNetworking은 기본적으로 요청을 캐시하는 NSURLRequest를 사용합니다.

cachePolicy 속성을 설정하여 요청이 캐시되는 방식을 결정할 수 있습니다. 기본적으로 클라이언트는 HTTP 사양을 따라 서버가 캐시 할시기와 시간을 클라이언트에게 알려주는 HTTP 헤더를 보낼 수 있습니다. 이 설정을 유지하고 서버에서 캐시 헤더를 업데이트하여 캐시하지 않으려는 요청을 캐시하지 않도록 클라이언트에 알려주는 것이 좋습니다.

캐시 된 요청을 원하지 않으면 NSURLRequestReloadIgnoringLocalCacheData 또는 NSURLRequestReloadIgnoringLocalAndRemoteCacheData을 지정할 수 있습니다. 후자는 프록시/중개자에게 캐시 된 응답을 제공하지 않는다는 것을 알립니다.

[AFHTTPClient -requestWithMethod: path: parameters:]에있는 모든 요청을 재정 의하여 설정하면 새로운 데이터를 사용할 수없는 경우에도 데이터를 다운로드하므로 앱이 더 느리게 실행됩니다.

+0

. 지금 나는 시간 변화와 함께이 이상한 것들이 네트워킹에 어떻게 영향을 미치는지 이해합니다. –

관련 문제