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;
}
}
'까벨로퍼 > 개발 이야기' 카테고리의 다른 글
[react] 웹 프레임 창 타이틀 수정 (0) | 2021.05.17 |
---|---|
[postgresql] pg_dump (0) | 2021.05.12 |
[react] Maximum update depth exceeded. (0) | 2021.04.15 |
[python] 변수 타입 tuple인지 확인 예제 (0) | 2021.04.01 |
[python] Django HTML 태그 인식시키기 (0) | 2021.03.07 |