sql >> Database >  >> RDS >> Mysql

ANDROID&PHP - Hoe JSONArray van MySql weer te geven met behulp van PHP

Probleem

HttpURLConnection heeft geen JavaScript-ondersteuning, maar er wordt een noodzakelijke cookie gegenereerd met JavaScript.

Uw oproep

String reqUrl = "http://zxccvvv.cuccfree.com/send_data.php";
URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

mislukt, omdat de cookie __test ontbreekt.

Oplossen

Vanaf een eerste blik op de JavaScript-bron lijkt de cookie constant te zijn voor een bepaalde URL, dus het kan voldoende zijn om in te stellen voor een constante cookie :

String cookie = "__test=2bf7c15501c0ec57f8e41cb84871a69c";

URL url = new URL(reqUrl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(7000);
conn.setRequestMethod("GET");
conn.setRequestProperty("Cookie", cookie);

Alternatief: Met behulp van een WebView kunnen we de cookie pakken, dus dit is de voorkeursbenadering, omdat deze niet kapot gaat als de cookie verandert en het niet veel tijd kost:

@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");
}

en stel het in zoals in het bovenstaande voorbeeld:

conn.setRequestProperty("Cookie", cookie);

Uitvoer in 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"}]



  1. Rollen gebruiken die nieuw zijn in MySQL 8

  2. Tabel wijzigen in Oracle

  3. autocomplete toont alle invoer, zoekt niet

  4. MySQL:time-out voor vergrendelingswachttijd overschreden