iOS 프로젝트에서 일하고 있습니다.
이 응용 프로그램에서는 서버에서 이미지를 다운로드하고 있습니다.
문제:
이미지를 다운로드하는 동안 Request Timeout이 발생 합니다. 문서에 따르면 요청 시간 초과의 HTTP 상태 코드는 408
입니다.
하지만 내 응용 프로그램 0
에서 다음 오류와 함께 HTTP 상태 코드 가 나타납니다.
오류 도메인 = NSURLErrorDomain 코드 = -1001 “요청 시간이 초과되었습니다.” UserInfo = 0xb9af710 {NSErrorFailingURLStringKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg , NSErrorFailingURLKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg , NSLocalizedDescription = 요청 시간 초과 ., NSUnderlyingError = 0x13846870 “요청 시간이 초과되었습니다.”}
인터넷을 통해 검색하는 동안 HTTP 상태 코드 0에 대한 정보를 찾지 못했습니다.
누구든지 나에게 이것을 설명 할 수 있습니까?
답변
HTTP 상태 코드 0은 없습니다. 표시되는 것은 사용중인 API / 라이브러리에서 반환 한 0입니다. 이에 대한 문서를 확인해야합니다.
답변
NSHTTPURLResponse
객체 의 상태 코드 0은 일반적으로 응답이 없음을 의미하며 다양한 이유로 발생할 수 있습니다. 서버는 유효한 HTTP 상태 코드가 아니므로 0 상태를 반환하지 않습니다.
귀하의 경우에는, 당신은되어 나타나는 요청이 시간 초과되고 0이 속성의 기본값이기 때문에 상태 코드 0을 얻는 . 시간 초과 자체는 서버가 제 시간에 응답하지 않거나 방화벽에 의해 차단되거나 전체 네트워크 연결이 중단되는 등 다양한 이유로 발생할 수 있습니다. 일반적으로 후자의 경우 전화가 네트워크에 연결되어 있지 않다는 것을 알만큼 스마트하지만 즉시 실패합니다. 그러나 명백한 상태 코드 0으로 여전히 실패합니다.
상태 코드가 0 인 경우, 실제 오류가 반환에 캡처되어 있습니다 NSError
, 객체가 아니라 NSHTTPURLResponse
.
408
내 경험상 HTTP 상태 는 매우 드물다. 나는 한 번도 만난 적이 없습니다. 그러나 이것은 클라이언트가 서버에 대한 활성 소켓 연결을 유지해야하고 서버가 클라이언트에서 열린 소켓을 통해 더 많은 데이터를 전송하기를 기다리고 있지만 주어진 시간과 서버는 408
상태 코드로 연결을 종료하고 기본적으로 클라이언트에게 “너무 오래 걸렸습니다”라고 알립니다.
답변
답변
iOS SDK에서 API 호출 시간이 초과되면 상태 0이 표시됩니다.
답변
내 제한된 경험으로 볼 때 다음 두 가지 시나리오가 응답을 유발할 수 있다고 말하고 싶습니다 status code: 0
. 더 많을 수도 있지만 저는 그 두 가지를 알고 있습니다.
- 연결이 느리게 응답 할 수 있습니다.
- 또는 백엔드 서버를 사용할 수 없습니다.
문제는 status: 0
약간 일반적이며 빈 응답 본문을 트리거하는 더 많은 사용 사례가 될 수 있습니다.
답변
상태 코드 ‘0’은 다음 세 가지 이유로
발생할 수 있습니다.
1) 클라이언트 가 서버에 연결할 수 없습니다.
2) 클라이언트 가 제한 시간 내에
응답을받을 수 없습니다.
3) 클라이언트 가 요청을 “중지 (중단)” 했습니다.
하지만이 세 가지 이유는 표준화되지 않았습니다.
답변
HTTP 응답 0은 표준 HTTP 응답이 아닙니다. 그러나 클라이언트가 서버에 연결할 수 없어 시간 초과가 발생했음을 나타냅니다.