Vấn đề
HttpURLConnection
không có hỗ trợ JavaScript, nhưng một cookie cần thiết được tạo bằng JavaScript.
Cuộc gọi của bạn
String reqUrl = "http://zxccvvv.cuccfree.com/send_data.php";
URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
không thành công, vì cookie __test
bị mất tích.
Khắc phục
Ngay từ cái nhìn đầu tiên về nguồn JavaScript, cookie có vẻ là không đổi đối với một url nhất định, vì vậy nó có thể đủ để đặt cho cookie không đổi :
String cookie = "__test=2bf7c15501c0ec57f8e41cb84871a69c";
URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(7000);
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", cookie);
Thay thế: Sử dụng WebView, chúng tôi có thể lấy cookie, vì vậy đây là cách tiếp cận thích hợp hơn, vì nó sẽ không bị hỏng, nếu cookie thay đổi và không mất nhiều thời gian:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getCookie();
if(cookie!=null) {
new GetContacts().execute();
}
}
private void getCookie(){
CookieManager.setAcceptFileSchemeCookies(true);
WebView wv = new WebView(getApplicationContext());
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl(url);
cookie = CookieManager.getInstance().getCookie("zxccvvv.cuccfree.com");
}
và đặt nó như trong ví dụ trên:
conn.setRequestProperty("Cookie", cookie);
Đầu ra trong logcat
Response from url: [{"0":"1","id":"1","1":"pertanyaan ke 1","ask":"pertanyaan ke 1"},{"0":"2","id":"2","1":"pertanyaan ke 2","ask":"pertanyaan ke 2"},{"0":"3","id":"3","1":"pertanyaan ke 3","ask":"pertanyaan ke 3"},{"0":"4","id":"4","1":"pertanyaan ke 4","ask":"pertanyaan ke 4"},{"0":"5","id":"5","1":"pertanyaan ke 5","ask":"pertanyaan ke 5"}]