네트워크 연결 오류 발생 해결 E/Volley: [3417] BasicNetwork.performRequest: Unexpected response code 403 | 삽질 노트

hoya·2021년 6월 6일
0

삽질 노트

목록 보기
2/8
post-thumbnail

😥 오류 발생

Volley 통신으로 HTTP 통신을 하던 도중, 안드로이드 스튜디오 에뮬레이터(AVD)에서는 정상적으로 작동이 되나 갤럭시노트8에서는 작동이 되지 않는 오류가 발생하였다.

package com.cookandroid.megagenie2;

import com.android.volley.toolbox.StringRequest;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;

import java.util.HashMap;
import java.util.Map;

public class IdCheckRequest extends StringRequest {

    final static private String URL = "http://yourIP/idcheck.php";
    private Map map;

    public IdCheckRequest(String name, String email, Response.Listener listener){
        super(Method.POST, URL, listener, null);

        map = new HashMap<>();
        map.put("name", name);
        map.put("email", email);
    }

    @Override
    protected  Map getParams() throws AuthFailureError{
        return map;
    }
}

E/Volley: [3417] BasicNetwork.performRequest: Unexpected response code 403 for

온갖 구글링을 해서 해결법을 찾아보았지만, 해결이 되지 않아 잠시 방치해두고 있었는데, 책에서 해답을 찾아 기쁜 마음으로 공유해보고자 한다.

해당 오류가 발생한 이유는 보안 강화 목적으로 Android 9부터 HTTP 통신을 금지시켰기 때문이다. 기본적으로 HTTPS를 사용해야 한다는 의미지만, HTTP를 이용하겠다면 별도로 설정이 필요하다.


🤗 해결

res/xml 폴더에 사용자가 원하는 이름으로 xml 파일을 만들고 아래와 같이 작성한다.

<?xml version="1.0" encoding="utf-8"?>
<!-- Android9 부터 HTTP 통신이 금지되어 별도의 설정이 필요함. -->
<!-- HTTP 통신을 허용할 도메인 혹은 IP 주소를 명시해주어야 함. -->
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">YOUR IP</domain>
    </domain-config>
</network-security-config>

이 후 AndroidManifest.xml에 들어가 application 태그에 추가 xml 파일을 설정해주면 된다.

<application
	...
	android:networkSecurityConfig="@xml/network">

그러나 앱이 동작하면서 동적으로 도메인이 결정되는 경우가 존재하는데, 이 때는 xml 파일을 만들지 않고 application 태그에 속성을 추가하면 된다.

<application
	...
	android:usesCleartextTraffic="true">

하다가 도저히 답이 안나와서 포기하고 새로운 에뮬레이터를 깔까 생각 중이었는데, 마침 책에서 해답이 나와서 정말 다행이었다. 멀리 구글을 찾아 해맸던 사람들에게 도움이 되기를 바라며, 책의 저자분께 감사 인사를 표한다.


참고 및 출처

깡쌤의 안드로이드 프로그래밍

profile
즐겁게 하자 🤭

0개의 댓글