728x90
반응형
Retrofit2를 사용하기 위해 node 서버를 로컬에 띄웠는데 접근이 되지 않는다.
디바이스의 경우 실행 환경이 다르기 때문에 루프백 주소(127.0.0.1)로 접근하는건 말이 안되고,
에뮬레이터에서 루프백 주소로 접근했더니, 그래도 동작 불능이다.
구글링을 했더니 역시나 해답 발견.
안드로이드는 가상 라우터와 방화벽 뒤에서 네트워크가 동작하기 때문에 locahost나 127.0.0.1이 에뮬레이터를 실행하는 컴퓨터가 아니라 에뮬레이터 자신이 되어버린다는것.
따라서 불변의 접근 가능한 주소를 제공해준다.
주소는 다음과 같다.
AVD - 10.0.2.2
Genymotion - 10.0.3.2
코드에 적용하면 다음과 같이 사용할 수 있겠다.
public class Repo {
private static final String URL = "http://10.0.2.2:3000";
private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.client(httpClient.build());
private static Retrofit retrofit = builder.build();
public static <S> S createService(Class<S> serviceClass) {
return retrofit.create(serviceClass);
}
}
아래에 원문을 남겨 놓는다.
반응형
'개발' 카테고리의 다른 글
안드로이드 스튜디오 Heap 사이즈 늘리기 (0) | 2020.01.16 |
---|---|
안드로이드 스튜디오에서 Lombok을 사용해보자 (0) | 2019.07.02 |
Global로 설치된 노드 모듈이 실행되지 않는 경우 (0) | 2019.07.01 |
안드로이드 Gradle Dependency 버전을 변수로 사용 (0) | 2019.07.01 |
Netlify로 정적 웹 클라이언트를 배포해보자! (4) | 2019.04.07 |
댓글