cuốn sách gpt4 ai đã làm

java - Làm cách nào để trả về kết quả của yêu cầu http từ AsyncTask?

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 16:34:22 26 4
mua khóa gpt4 Nike

Tôi là người mới bắt đầu sử dụng Android và Java. Cho đến giờ mọi việc vẫn ổn, nhưng tôi vấp phải một vấn đề mà tôi không thể giải quyết được.

Tôi đang cố gắng tạo một phương thức trong lớp ứng dụng của mình để thực hiện cuộc gọi http tới danh sách bằng cách sử dụng giá trị được truyền cho nó. Đây là phần đầu tiên. Đây là một Hoạt động được kích hoạt bằng cách nhấp vào nút.

  // Thêm dữ liệu của bạn vào mảng
Danh sách nameValuePairs = new ArrayList(2);
nameValuePairs.add(new BasicNameValuePair("hành động", "2"));
nameValuePairs.add(new BasicNameValuePair("ô", "2500270025"));
nameValuePairs.add(new BasicNameValuePair("date", "blah"));
nameValuePairs.add(new BasicNameValuePair("time", "AndDev thật tuyệt!"));
nameValuePairs.add(new BasicNameValuePair("lý do", "2"));

// cần gọi yêu cầu
Kết quả chuỗi = ((RespondApp) getApplication()).makeHTTPCall(nameValuePairs);

Sau khi vào ứng dụng thì đây là phần nhận.

Chuỗi công khai makeHTTPCall(List nameValuePairs) {
// điều này sẽ được sử dụng để thực hiện tất cả các yêu cầu http từ toàn bộ ứng dụng
postToHttp().execute mới (nameValuePairs);
return null;
}

Đây là phần AsyncTask.

lớp postToHttp mở rộng AsyncTask<>, Void, String> {

@Ghi đè
protected void onPostExecute(Kết quả chuỗi) {
super.onPostExecute(kết quả);
// Tôi chắc chắn tôi cần thứ gì đó ở đây nhưng tôi không biết đó là gì
}

@Ghi đè
Chuỗi được bảo vệ doInBackground(List... params) {

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = HttpPost mới("http://www.evfd.ca/cell.php");
thử {

httppost.setEntity(UlEncodedFormEntity mới(params[0]));
Log.i("makeHttpCall", "hoàn tất mã hóa");
//Thực thi yêu cầu đăng bài HTTP
Phản hồi httpResponse = httpclient.execute(httppost);
Thực thể HttpEntity = reply.getEntity();
if (thực thể != null) {
Luồng đầu vào = thực thể.getContent();
Kết quả chuỗi = ConvertStreamToString(instream);
Log.i("Đọc từ máy chủ", result);
return result;
}

} bắt (ClientProtocolException e) {
return null;
} catch (IOException e) {
return null;
}
return null;
}

Tôi đang cố gắng nhận được phản hồi được máy chủ web gửi lại, hoàn toàn quay lại trang Hoạt động đã gọi quy trình này. Vì vậy, lý tưởng nhất là tôi chỉ cần tải cặp giá trị để thực hiện cuộc gọi và nhận lại phản hồi http và tiếp tục con đường vui vẻ của mình.

我该怎么做?

câu trả lời hay nhất

Bạn có thể truy cập trực tiếp vào Nhiệm vụ không đồng bộ Nó được tải xuống trên chính luồng giao diện người dùng chính. String. Chỉ cần ghi đè Nhiệm vụ không đồng bộ trong lớp protected void onPostExecute(Kết quả chuỗi) Và hoàn thành công việc ở đó. Cho dù bạn đến từ doInBackground() Bất kể giá trị nào được trả về, hàm này sẽ được gọi.

Về cơ bản, bước tiếp theo là onPostExecute() để thực hiện bất kỳ hoạt động nào. Nhìn thấy Làm cách nào để đưa kết quả của OnPostExecute() vào hoạt động chính vì AsyncTask là một lớp riêng biệt?Một số ý tưởng:

  • Sẽ Nhiệm vụ không đồng bộ lớp như một lớp bên trong lồng trong của bạn Hoạt động để nó có thể được sử dụng với các biến, phương thức, v.v. trong Hoạt động của bạn.

    <
  • Tạo triển khai Hoạt động của bạn接口(interface). Về cơ bản, nhiệm vụ gọi một cái gì đó như onHttpTaskComplete(Kết quả chuỗi) phương pháp.

Giới thiệu về java - Làm cách nào để trả về kết quả của yêu cầu http từ AsyncTask? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/13999222/

26 4 0
Hồ Xil
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress