2017-10-28 37 views
0

Android和Java的新手。需要幫助從MainActivity發送發佈數據。據我瞭解,我必須使用異步,但它不會觸發doinbackgroud。 另外我不知道如果嘗試抓住是正確的? 控制檯日誌只顯示 「onPreExecute」Async OkHttpClient Post

public class PostHandler extends AsyncTask<String, Void, String> { 
    String user, password; 

    public PostHandler(String user, String password) { 
     this.user = user; 
     this.password = password; 
     Log.e("AsyncTask", "onPreExecute"); 

    } 

    @Override 
    protected String doInBackground(String... params) { 
     Log.v("AsyncTask", "doInBackground"); 
     OkHttpClient client = new OkHttpClient(); 
     RequestBody body = new FormBody.Builder() 
       .add("user", user) 
       .add("password", password) 
       .build(); 

     Request request = new Request.Builder() 
       .url("http://my.domain/register_01.php") 
       .post(body) 
       .build(); 

     try { 
      Log.v("AsyncTask", "onPostExecute"); 
      client.newCall(request).execute(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
      Log.v("MyTag", "IOException " + e.toString()); 
     } 
     return null; 
    } 
} 

public void sendMessage(View view) { 
    Log.i("MyTag", "Button pressed"); 
    String user = "Bengt"; 
    String password = "qaz"; 
    new PostHandler(user, password); 
} 

回答

0

您還沒有執行的AsyncTask,喲需要調用execute(someString)方法。在你的情況下,你可以做new PostHandler(user, password).execute(null)不是最好的解決方案。如果你要使用AsyncTasks(這是相當不贊成的順便說一句)我會通過執行方法發送端點的URL作爲參數。

否則轉到Retrofit + RxJava或更現代的東西。

+0

好的,這對我來說是新的。現在修復工作必須做,但我稍後會看Retro。 感謝您的提示/幫助:-) – user3260939