Fetch 이용시 안드로이드 지연문제?

기본적으로 제공하는 fetch를 통해 json 데이터를 얻어오는 부분이 있는데요.

ios는 바로 확인이 가능한데, 안드로이드에서는 나오질 않네요…

fetch를 사용하는 소스부는 아래와 같습니다.

      myHeaders.append('Content-Type', 'text/plain');

      const formData = new FormData();
      formData.append('파라미터', userId);

      let myInit = {
        method: 'POST',
        header: myHeaders,
        body: formData
      }

      const url = '특정URL';

      fetch(url, myInit)
        .then(json => json.json())
        .then(repos => {
          this.setState({ isLoading: false, repos: repos });
        })
        .catch(error => {
          console.error(error);
        });
      
    } catch(error){
      console.error(error);
    }

ios는 바로바로 나오는데, 안드로이드는 일단 2개 기계에서 테스트했을때 나오질 않고요…appetize-simulator를 이용해도 안나오네요…

expo 이용해서 간단하게 만든 앱이었는데… 비슷한 이슈가 있었다가 closed되어서요…

expo 32에 rn 0.58 쓰고있습니다.

오타 때문인거 같네요?

headers, s가 빠진거 같네요

오타맞는거같은데, 수정후에도 여전히 안되네요…
오타일때도 ios되고, 안드로이드 안되는데, 오타수정후에도 ios되고, 안드로이드만 안되네요…

*추가사항: 안드로이드에서 이런 오류가 나오긴 하네요… multipart != text/plain

curl 이나, postman으로 테스트해 보세요.

Headers의 Accept, content-type 체크 다시한번 더 해 보시구요

질문자가 공유하신 링크의 8일전 답변을 보니 ipv6 이슈인거 같네요. 해당 API endpoint의 네트워크가 ipv6 지원을 못해서 그런거 아닐까요? 다른 테스트 API 가령 JSONPlaceholder의 한 endpoint 로 호출 해보고 같은 이슈가 있는지 확인해서 그런 문제가 없으면, 현재 접속중인 api의 네트워크 설정에 영향을 받는 거라고 생각해볼 수 있겠네요.

postman과 실제 pc에서 url을 치고 들어갔을때, ios에서 앱상 실행, 안드로이드 브라우저에서(동일 lte) url을 칠경우 json이 정상로드되고 있습니다.

expo로 빌드된 안드로이드 앱에서만 호출되지않네요…

expo로 빌드된 안드로이드 앱에서 다른 API(위에 언급한, json place holder 같은) 호출 테스트 해보면 좋을 거 같아요. 이 테스트에서 문제가 없다면 API를 의심해볼 수 있을 거 같아서요. :slight_smile:

혹시
실 요청 url, param이 어떻게 되나요?
제가 해볼 수 있나요?

앗… 사내 url이다보니 공개하기는 좀 그렇고… 저도 테스트를 제 아이폰으로만 하고, 동료의 안드로이드를 정말 가끔 빌려서 한것인지라…

일단 choipd님께서 말씀하신대로, 샘플앱을 하나 동일하게 만들어서 일반적인 mock data의 json을 가져와서 뿌려주는지 테스트해보겠습니다!!

오늘 좀 지원이 되서 안드로이드 에뮬레이터를 통해 테스트해보았는데요.
기존 현상 재연후, 소스코드 수정해가며 진행했습니다. 결과공유 + 재질문이 하나 있습니다.

결과정리

  • jsonplaceholder를 통한 sample앱에서는 ios/android fetch가 정상작동
  • 동일방식으로 사내URL 호출시 ios만 가능, android 여전히 에러(networkd fetch error)
  • 호출되는 API를 http로 하니 정상작동… https시 동일에러 발생

재질문
android에서 https 호출을 하기 위해서는 ios의 plist처럼 추가해주어야 하는 부분이 있나요?
예전 네이티브로 개발할때는 있었던거 같은데, rn + expo 환경은 잘 모르겠네요…

jsonplaceholder 에서 성공했다면, https 역시 잘 된다고 볼 수 있겠지요. 회사의 https인증에 문제가 있을 수 있을 거 같군요.
https가 기본이고 http인경우에는 iOS 에서 ATS 세팅을 해줘야합니다. 안드로이드에서는 없는걸로 압니다.

https 인증서 발급 기관에 따라서 모바일 앱에서 접근할 때 문제가 되는 경우가 있습니다. startssl 같은 경우

2 Likes

게시물에 달아주신 모든 답변 감사드립니다~
인증서 문제라고 생각해야겠네요.

1 Like