지난 글에서 /system/etc/hosts 파일을 수정했다. 그런데 이 방법은 사용자 바이너리를 루팅하거나 엔지니어링 바이너리(주로 단말 제조사에서 사용)에서만 가능하다.
이번에는 파일을 직접 수정하는 대신에, HTTP request를 만들 때 헤더에 Host 값을 직접 넣자. Apache HttpComponents를 사용하는 경우,
HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost( "http://www.example.com" ); httpPost.setHeader("Host", "test.example.com"); HttpEntity requestEntity = new StringEntity( "{\"id\": \"Open\"}" , HTTP.UTF_8 ); httpPost.setEntity( requestEntity ); HttpResponse response = httpClient.execute( httpPost );
와 같이 Host 값을 설정할 수 있다.
참고로, Host 값을 따로 설정하지 않는 경우, URL의 Host 부분이 자동으로 채워진다. 위 경우 test.example.com로 채우지 않는다면 www.example.com이 채워질 것이다.
그 밖에
URL의 Host 부분만 잘라내는 방법이 궁금하다면 스택오버플로우의 이 글을 참조하자.
참고