修复Android聊天应用中AsyncTask错误的代码示例
修复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(); } } } }}
代码解释:
- ChatRequestTask 类继承自 AsyncTask,用于异步执行网络请求。2. doInBackground() 方法构建API请求URL,发送GET请求到聊天机器人API,并读取API响应。3. onPostExecute() 方法解析API响应,提取聊天机器人的回复,并将其添加到聊天列表中。4. addMessage() 方法将消息添加到聊天列表中,并显示在屏幕上。
注意:
- 请将代码中的
http://api.qingyunke.com/api.php替换为你实际使用的聊天机器人API地址。- 确保你的应用程序拥有访问网络的权限。
希望这个代码示例能够帮助你修复Android聊天应用中AsyncTask的错误!
原文地址: https://www.cveoy.top/t/topic/b95N 著作权归作者所有。请勿转载和采集!