gpt4 book ai didi

android - AsyncTask : DoInBackground(String. ..) 与 DoInBackground(Params...) 冲突?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:45 24 4
gpt4 key购买 nike

当尝试使用 Async task 执行 HTTP post 时,我得到以下信息:

ASyncTask: DoInBackground(String...) clashes with DoInBackground(Params...) in Android.os.AsyncTask; attempting to use incompatible return type

我该如何解决这个问题?这是我第一次使用 AsyncTask。

导致错误的特定行:

@Override
protected String doInBackground(String... params) {

来自完整 AsyncTask 的代码:

private class MyTask extends AsyncTask<String, Void, Void>
{
boolean success = false;

@Override
protected String doInBackground(String... params) {
StringBuilder respData = new StringBuilder();
URL url = new URL("MY_URL");
URLConnection conn = url.openConnection();
HttpURLConnection httpUrlConnection = (HttpURLConnection) conn;

httpUrlConnection.setUseCaches(false);
httpUrlConnection.setRequestProperty("User-Agent", "App");
httpUrlConnection.setConnectTimeout(30000);
httpUrlConnection.setReadTimeout(30000);

httpUrlConnection.setRequestMethod("POST");
httpUrlConnection.setDoOutput(true);

OutputStream os = httpUrlConnection.getOutputStream();
//InputStream postStream = toInputStream(toSubmit, "UTF-8");
InputStream stream = new ByteArrayInputStream(toSubmit.getBytes(StandardCharsets.UTF_8));
try {
copy(stream, os);
} finally {
stream.close();
os.flush();
os.close();
}

httpUrlConnection.connect();

int responseCode = httpUrlConnection.getResponseCode();

if (200 == responseCode) {
InputStream is = httpUrlConnection.getInputStream();
InputStreamReader isr = null;
try {
isr = new InputStreamReader(is);
char[] buffer = new char[1024];
int len;
while ((len = isr.read(buffer)) != -1) {
respData.append(buffer, 0, len);
}
} finally {
if (isr != null)
{
isr.close();
success = true;
}
}
is.close();
}
else {
// use below to get error stream
// inputStream = httpUrlConnection.getErrorStream();
}
return "done";
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);

Toast toast = Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT);

}
}

最佳答案

像这样声明你的类

private class MyTask extends AsyncTask<String, Void, String>

最后一个参数是您将从 doInBackground 返回的类型,它也是 onPostExecute 的输入。

关于android - AsyncTask : DoInBackground(String. ..) 与 DoInBackground(Params...) 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33616123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com