我应该如何在Java的后台线程中放置代码?

我应该如何在Java的后台线程中放置代码?,java,android,android-asynctask,okhttp,restapi,Java,Android,Android Asynctask,Okhttp,Restapi,我正在使用一个API将一些数据上传到服务器,我正在android应用程序上部署这个API 我使用Postman测试了API,它工作得非常好,并从Postman生成了代码 登录代码: OkHttpClient client = new OkHttpClient().newBuilder() .build(); MediaType mediaType = MediaType.parse("application/json"); RequestBody body = new M

我正在使用一个API将一些数据上传到服务器,我正在android应用程序上部署这个API

我使用Postman测试了API,它工作得非常好,并从Postman生成了代码

登录代码:

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("username","abc@abc.com")
  .addFormDataPart("password","E1234567")
  .build();
Request request = new Request.Builder()
  .url("192.168.1.51/auth/login")
  .method("POST", body)
  .addHeader("User-Agent", "Koala Admin")
  .addHeader("Content-Type", "application/json")
  .addHeader("Cookie", "session=3d9c1888-e9b0-40b3-958b-71c50538d338")
  .build();
Response response = client.newCall(request).execute();
创建用户并上传照片

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("subject_type","1")
  .addFormDataPart("name","jasim")
  .addFormDataPart("start_time","1619496549")
  .addFormDataPart("end_time","1619525349")
  .addFormDataPart("photo","/C:/Users/jasim/Pictures/Camera Roll/WIN_20210422_14_54_39_Pro.jpg",
    RequestBody.create(MediaType.parse("application/octet-stream"),
    new File("/C:/Users/jasim/Pictures/Camera Roll/WIN_20210422_14_54_39_Pro.jpg")))
  .build();
Request request = new Request.Builder()
  .url("192.168.1.51/subject/file")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Cookie", "session=3d9c1888-e9b0-40b3-958b-71c50538d338")
  .build();
Response response = client.newCall(request).execute();

现在我想知道如何将这些代码放入AsyncTask类中,并在后台生成必要的代码。

您可以调用
enqueue
方法而不是
execute
,它将在后台线程上工作:

client.newCall(request).enqueue(new Callback() {
    @Override
    public void onResponse(Call call, Response response) throws IOException {
         // handle your response
    }

    @Override
    public void onFailure(Call call, IOException e) {
         // handle the failure
    }
});

你为什么不改型?我对改型一无所知。你能帮我查一下这个密码吗。如何放入后台线程。谢谢你可以用下面的答案@shmakova@Amin我还需要你的帮助。在我的api请求中有一个cookie头,每次我都要从postman复制这个cookie并粘贴到我的代码中使其工作。我如何在我的应用程序中生成cookie并在cookie头中给出该值?这可能真的对你有帮助吗?此方法是否会像doInBackground()一样工作?它将在自己的okttp调度程序上运行@JASIMCHOUHANHI@shmakova,我还需要你的帮助。在我的api请求中有一个cookie头,每次我都要从postman复制这个cookie并粘贴到我的代码中使其工作。我如何在我的应用程序中生成cookie并在cookie头中给出该值?