2017-10-28 8 views
0

AndroidおよびJavaの新機能です。 MainActivityからPostデータを送信する際に助けが必要です。私は非同期を使用しなければならないと理解していますが、doinbackgroudは起動しません。 また、tryキャッチが正しいかどうかわかりません。 コンソールロギングが唯一の「onPreExecute」非同期OkHttpClient投稿

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を実行していないことを示し、ヨーヨーは、実行(someString)メソッドを呼び出す必要があります。あなたの場合、new PostHandler(user, password).execute(null)は最善の解決策ではありません。 AsyncTasks(これはかなり推奨されていません)を使用するつもりなら、私はエンドポイントのurlをexecuteメソッドを通してパラメータとして送信します。

それ以外の場合は、Retrofit + RxJavaまたはもっと近代的なものに移動します。

+0

これは私にとって初めてのものです。修正は今はやる必要がありましたが、後でRetroを見ていきます。 ヒント/ help :-)をありがとう – user3260939

関連する問題