2017-07-14 85 views
0

我想在一個應用程序,講述了一個遠程MySQL數據庫的一些值設置爲從1到0的Android的AsyncTask更新查詢遠程MySQL服務器

這就是所謂的resetSentValues.php PHP腳本並運行從AsyncTask一個簡單的查詢當我在瀏覽器中訪問該文件時,數據庫中的值會更改。所以我可以說腳本起作用。

我想要的是,我可以點擊一個按鈕,並重置我的數據庫中的所有值(使用工作腳本)。我試圖用一個簡單的AsyncTask如下:

public class MessageSentResetter extends AsyncTask<Void, String, String> { 
    private URL urlMsgtSateResetScript; 
    HttpURLConnection urlConnectionMsgStateReset = null; 

    @Override 
    protected void onPreExecute() { 
     try { 
      urlMsgtSateResetScript = new URL("http://freerunnl.nl/smsSender/webservice/resetSentValues.php"); 
      System.out.println("message sent resetter on pre execute tried"); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 

     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(Void... voids) { 
     try { 
      urlConnectionMsgStateReset = (HttpURLConnection) urlMsgtSateResetScript.openConnection(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     System.out.println("Onpostexecute is reached, now disconnect the httpurlconnection"); 
     urlConnectionMsgStateReset.disconnect(); 
     super.onPostExecute(s); 
    } 
} 

而且我把它叫做是這樣的:

@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) 
private void sendSMS() { 
    MessageSentResetter resetter = new MessageSentResetter(); 
    resetter.execute(); 

    Toast.makeText(MainActivity.this, "The message sent values are reset", Toast.LENGTH_LONG).show(); 
} 

當點擊事件被實例化,像這樣:

btnSendSMS.setOnClickListener(new OnClickListener() { 
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) 
    public void onClick(View view) { 
     sendSMS(); 
    } 
}); 

有什麼建議?我已經建立了相似的設置,以便我可以從數據庫中選擇和分析JSON對象,以便連接起作用。但我只想通過點擊一下按鈕來執行這個腳本。

非常感謝您抽出時間!

+0

你只是打開一個連接,但沒有任何獲取或發佈網址的請求。 –

+0

我只想運行php文件,我想我忘了調用'urlConnectionMsgStateReset.connect();' ?我現在要試試這個。 – robertjuh

+0

,我做了urlConnectionMsgStateReset.setRequestMethod(「POST」); – robertjuh

回答

0
public class MessageSentResetter extends AsyncTask<Void, String, String> { 
private URL urlMsgtSateResetScript; 
//HttpURLConnection urlConnectionMsgStateReset = null; 
HttpURLConnection urlConnectionMsgStateReset; 


@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 



} 

@Override 
protected String doInBackground(Void... voids) { 

    try { 
     urlMsgtSateResetScript = new URL("http://freerunnl.nl/smsSender/webservice/resetValues.php"); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
     return "exception"; 
    } 


    try { 
     urlConnectionMsgStateReset = (HttpURLConnection) urlMsgtSateResetScript.openConnection(); 
     urlConnectionMsgStateReset.setReadTimeout(15000); 
     urlConnectionMsgStateReset.setRequestMethod("POST"); 

     urlConnectionMsgStateReset.setDoInput(true); 
     urlConnectionMsgStateReset.setDoOutput(true); 



     urlConnectionMsgStateReset.connect(); 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     int response_code = urlConnectionMsgStateReset.getResponseCode(); 
     System.out.println("The response code for the resetter is"); 
     System.out.println(response_code); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

@Override 
protected void onPostExecute(String s) { 
    System.out.println("Onpostexecute is reached, now disconnect the httpurlconnection"); 
    urlConnectionMsgStateReset.disconnect(); 
    super.onPostExecute(s); 
    } 
} 

它現在有效,當我點擊一個按鈕時,我的服務器上的php腳本運行。