개발모음집

android WebView에서 php파일에 post로 값넘기기 본문

Android

android WebView에서 php파일에 post로 값넘기기

void 2018. 6. 14. 09:00

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';