아래글에서는 WebView와 웹서버간의 HTTP 통신내용을 모니터링하는 방법을 설명했습니다. 이번에는 Spring-Android 라이브러리를 이용하여 앱과 웹서버간에 REST로 통신하는 경우에 통신 내용을 엿보는 방법입니다.

import org.apache.http.HttpHost;
import org.apache.http.conn.params.ConnRoutePNames;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
...

public class MyRestActivity extends Activity {

  public xxx someMethod() {
  
    RestTemplate restTemplate = new RestTemplate();
    ... ...
    
    if (isDebugMode(this.getApplicationContext())) { 
      HttpComponentsClientHttpRequestFactory factory =
                   (HttpComponentsClientHttpRequestFactory) restTemplate.getRequestFactory();
      HttpHost proxy = new HttpHost("본인로컬PC의 IP주소", 프록시포트, "http");
      factory.getHttpClient().getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    }

    ... ...
    ResponseEntity<Xxx> result = 
restTemplate.exchange(url, HttpMethod.POST, requestEntity, Xxx.class);
    ... ...
 
  }
}  


아래글에서 지적했듯이 개발자 PC의 IP주소에 localhost나 127.0.0.1 루프백 주소를 쓰면 안됩니다.

이클립스 TCP/IP 모니터 뷰 설정하는 방법은 아래글과 동일합니다.


실제 앱 개발시에는 위와 같이 프록시를 설정한 RestTemplate 인스턴스를 공통모듈단에서 한개만 만들어놓고 재사용하면 됩니다.
 
Posted by 에코지오
,