In my case..

 

회사에서 서비스하고 있는 앱에 수정 사항이 생겨서 기능을 추가하여 오랜만에 플레이 스토어에 등록했는데 안전하지 않은 TrustManager 구현 ~~ 어쩌고저쩌고.. 오류로 심사 거부가 발생했다.

 

앱 전문으로 개발하는게 아니라.. 당황했지만  developers.android.com 힘을 빌어 'HTTPS 및 SSL을 사용한 보안' 으로 검색하면 가이드가 나온다.

 

일단 회사에서는 잘알려진 발급기관의 인즈서CA를 쓰고 있기 때문에 가이드에 있는데로 구현하고, 일부는 구글링 해서 간단하게 래핑 클래스를 작성하였다.

 

/**
 * The Class HttpHelper.
 * Http 핼퍼 클래스
 */
public class HttpHelper2 {

	/**
	 * Instantiates a new http helper.
	 */
	public HttpHelper2() {
	}

	public String requestHttp(String sUrl, Map<String, Object> params) throws IOException {
		URL url = new URL(sUrl);
		StringBuilder postdata = new StringBuilder();
		for (Map.Entry<String, Object> param : params.entrySet()) {
			if(postdata.length() != 0) postdata.append('&');
			postdata.append(URLEncoder.encode(param.getKey(), "UTF-8"));
			postdata.append('=');
			postdata.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));
		}
		byte[] postDataBytes = postdata.toString().getBytes("UTF-8");

		HttpURLConnection conn = (HttpURLConnection)url.openConnection();
		conn.setRequestMethod("POST");
		conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
		conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
		conn.setDoOutput(true);
		conn.getOutputStream().write(postDataBytes);
		BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

		StringBuilder sbRecv = new StringBuilder();
		String sLine;
		while((sLine = in.readLine()) != null) {
			System.out.println(sLine);
			sbRecv.append(sLine);
		}
		in.close();
		return sbRecv.toString();
	}
}

//가져다 쓸때
public class RegistTask extends AsyncTask<String, Integer, String> {
  protected String doInBackground(String... params) {
    String url = "https://yoursite";

    HttpHelper2 httpHelper = new HttpHelper2();
    Map<String, Object> postdata = new LinkedHashMap<>();
    postdata.put("tag", CommonPreference.TAG_REGISTER);
    postdata.put("email", email);
    postdata.put("regid", regid);
    postdata.put("mobile_desc", model);
    try {
    recvbuf = httpHelper.requestHttp(url, postdata);
    } catch (IOException e) {
    e.printStackTrace();
    }
  	return recvbuf;       
  }
}

+ Recent posts