android WebView에서 php파일에 post로 값넘기기
1. 안드로이드 코드
try {
// 자바 스크립트 허용
WebSettings webSettings = binding.kakaoPayWebview.getSettings();
webSettings.setJavaScriptEnabled(true);
// 접속 URL
// Post로 kakaoPay.php로 userNo 값을 넘긴다. 참고 URL : http://ckhacker.tistory.com/64
// String postData = "user_no=" + URLEncoder.encode(app.getUserNo(), "UTF-8");
String postData = "user_no=" + URLEncoder.encode("String 데이터", "UTF-8");
binding.kakaoPayWebview.postUrl(URL, postData.getBytes());
// binding.kakaoPayWebview.loadUrl(URLUTILS.kakaoPayUrl+"?user_no="+app.getUserNo());
// Context 넘겨주는 기능, 구현 참고 URL : https://stackoverflow.com/questions/17917968/get-context-in-non-activity-class
binding.kakaoPayWebview.addJavascriptInterface(new MyJavaScriptInterface(this), "myJs");
// alert같은 알람을 받기 위해 setWebChromeClient() 사용
binding.kakaoPayWebview.setWebChromeClient(new WebChromeClient());
// 웹에서 페이지이동이 가능하게 하는 메서드
binding.kakaoPayWebview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
에러 1
php에서
$userNo = $_POST['user_no'];
echo $userNo;
이렇게 받으면 되는데 값이 넘어오지 않았다.
삽질 결과 ContentType을 "application/x-www-form-urlencoded"로 set해놨기 때문에 안드로이드에서도 "application/x-www-form-urlencoded"로 보내줘야 했던 것이다. 하지만 컨텐츠타입을 꼭 "application/x-www-form-urlencoded"으로 안해도 되기 때문에
ContentType에서 "application/x-www-form-urlencoded"을 제거한다.
수정 전 코드
$ContentType = 'application/x-www-form-urlencoded;charset=utf-8';
수정 후 코드
$ContentType = 'charset=utf-8';