修复Android聊天应用中AsyncTask错误的代码示例

本文提供了一个修复Android聊天应用中AsyncTask错误的代码示例。该示例演示了如何使用AsyncTask发送消息到聊天机器人API,并接收和显示回复。

**以下是修正后的代码:**javaimport android.os.AsyncTask;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;

import org.json.JSONException;import org.json.JSONObject;

import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;

public class ChatActivity extends AppCompatActivity {

private LinearLayout chatLayout;    private EditText inputEditText;

private List<String> chatList;

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_chat);

    chatLayout = findViewById(R.id.chatLayout);        inputEditText = findViewById(R.id.inputEditText);

    chatList = new ArrayList<>();    }

public void onSendClick(View view) {        String message = inputEditText.getText().toString().trim();        if (!message.isEmpty()) {            addMessage('You: ' + message);            inputEditText.setText('');

        // 异步发送请求给API,并处理响应            new ChatRequestTask().execute(message);        }    }

private void addMessage(String message) {        TextView textView = new TextView(this);        textView.setText(message);        chatLayout.addView(textView);    }

private class ChatRequestTask extends AsyncTask<String, Void, String> {

    @Override        protected String doInBackground(String... params) {            String message = params[0];            try {                // 构建API请求URL                String url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg=' + URLEncoder.encode(message, 'UTF-8');

            // 发送GET请求给API,并获取响应                HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();                connection.setRequestMethod('GET');

            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));                StringBuilder response = new StringBuilder();                String line;                while ((line = reader.readLine()) != null) {                    response.append(line);                }                reader.close();

            return response.toString();            } catch (Exception e) {                e.printStackTrace();            }            return null;        }

    @Override        protected void onPostExecute(String response) {            if (response != null) {                try {                    // 解析API响应                    JSONObject jsonObject = new JSONObject(response);                    String reply = jsonObject.getString('content');                    addMessage('Bot: ' + reply);                } catch (JSONException e) {                    e.printStackTrace();                }            }        }    }}

代码解释:

  1. ChatRequestTask 类继承自 AsyncTask,用于异步执行网络请求。2. doInBackground() 方法构建API请求URL,发送GET请求到聊天机器人API,并读取API响应。3. onPostExecute() 方法解析API响应,提取聊天机器人的回复,并将其添加到聊天列表中。4. addMessage() 方法将消息添加到聊天列表中,并显示在屏幕上。

注意:

  • 请将代码中的 http://api.qingyunke.com/api.php 替换为你实际使用的聊天机器人API地址。- 确保你的应用程序拥有访问网络的权限。

希望这个代码示例能够帮助你修复Android聊天应用中AsyncTask的错误!

修复Android聊天应用中AsyncTask错误的代码示例

原文地址: https://www.cveoy.top/t/topic/b95N 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录