2017-10-28 48 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