[Android] Retrofit2 URL Encoding 방지하기

     

    공공데이터 사이트에서 api를 받아서 활용하는중에 계속 같은에러가 발생하였습니다.

     

     

    에러를 찾아보니 GsonBuilder().setLenient().create() 를 컨버터에 붙여주면 된다는 글이 있었지만 해결되지 않았습니다.

    json 규격도 다 맞고, 혹시나 url이 잘못됐나 싶어 포스트맨으로도 확인해보았으나 데이터가 제대로 들어왔습니다.

     

    인터셉터에서 띄워주는 로그를 보니 공공데이터에서 받은 서비스키가 다르게 나오고있었습니다.

     

     

    제가 작성한 url 중 서비스키가 d49%3Do29%2R 이런식이었다면 d49%25253Do29%25252R 이렇게 나오고 있었는데

    원인을 찾아보니 자동으로 utf-8로 인코딩 돼서 서비스키가 변경되어 나오는 것이었습니다.

     

    공공데이터에서 받은 서비스키가 인코딩 서비스키였는데 인코딩된 서비스키를 또 인코딩을 했기때문에 나는 에러였습니다.

     

     

    그래서 인코딩이 된건지 안된거지를 판단할수 있게 encoded = true 를 추가하여 자동으로 인코딩 되지 않게 해줬더니 원하는 값이 잘 들어왔습니다!

     

     

     

     

     

    댓글