2013-06-07 6 views
0

multipartFormRequestWithMethod을 사용하여 이미지를 업로드하기 위해 내 백엔드 서버에 연결하는 데 AFHTTPClient을 사용하고 있습니다. Very Bad Network 설정을 사용하여 네트워크 조절기가있는 iPhone 앱에서 요청을 테스트 중이므로 요청이 평소보다 오래 걸린다는 것을 의미합니다.서버가 요청을받은시기를 아는 방법?

활동 표시기가 계속 표시되지 않게하려면 30 초 후에 요청을 취소하십시오. 업로드가 업로드가 완료되면 요청이 취소

  • 완료되기 전에 그러나 요청이 완료되기 전에 요청이 취소

    1. : 매우 나쁜 네트워크 시나리오에서이 있다는 것을 의미한다.

    두 번째 경우 서버가 정보를 수신하여 데이터베이스에 저장하지만 클라이언트가 오류 (작업 취소 중)를 수신하므로 사용자가 이미지를 나중에 다시 업로드하려고 시도 할 수 있습니다 같은 이미지를 두 번 가지고 있음

    요청이 서버에 도달했을 때 나는 동일한 이미지를 두 번 게시하지 않을 수 있음을 알고있었습니다.

    서버에서 요청을 받았는지 어떻게 확인할 수 있습니까?

  • +1

    통신 중에 앱이 전혀 작동하지 않는 경우 잘못 처리 한 것입니다. 동기가 아닌 비동기 요청을 사용하십시오. UI를 차단하면 사용자 경험이 좋지 않습니다. – occulus

    +0

    @ occulus, 죄송합니다. 내 잘못을 설명했습니다. 앱이 정지하지 않으면 앱을 차단하는 활동 표시기가 표시됩니다. 내 요청은 비동기 적으로 완료됩니다. – eliocs

    +0

    모든 HTTP 요청이 HTTP 응답을 생성하지는 않습니까? 왜 충분하지 않습니까? – trojanfoe

    답변

    2

    서버가 이전 요청을 완료했는지 여부를 확인하는 유일한 방법은 실제로 콘텐츠가 있는지 서버에 요청하십시오.

    두 번째 PUT/POST를 만들기 전에 이미지가있을 것으로 예상되는 URL에 대해 HEAD URL 요청을하십시오.

    +0

    서버에 대한 추가 요청이 필요하지만 대부분 시간이 걸릴 것입니다. (잘못된 연결 때문에'HEAD' 요청도 실패 할 수 있습니다.) – eliocs

    +0

    @eliocs 클라이언트는 요청이 성공적으로 완료되었는지 안다. HEAD는 [멱등수] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html)이고 작습니다. 도달 가능성이있는 동안 성공적으로 완료 될 때까지 HEAD 요청을 반복합니다. –

    +0

    @eliocs 추가 요청과 관련하여 HEAD는 작고 서버 측 캐시 가능합니다. 이것은 대역폭과 서버 오버 헤드를 작게 유지해야합니다. 또한, 이것은 실패한 PUT/POST 요청을 처리하는 오류에만 해당됩니다. 바라건대 많은 고객이 오류를 생성하지 않기를 바랍니다. –

    관련 문제