在Android开发中,当与PHP后端交互时,可能会遇到“undefined index”错误,这通常是由于未正确获取或解析返回的JSON数据所导致的。以下是解决该问题的代码示例:
import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class PHPConnection extends AsyncTask {
private static final String TAG = "PHPConnection";
@Override
protected String doInBackground(String... params) {
String urlString = params[0];
String jsonInputString = params[1];
String result = "";
try {
URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-Type", "application/json;charset=utf-8");
OutputStream outputStream = connection.getOutputStream();
outputStream.write(jsonInputString.getBytes("UTF-8"));
outputStream.close();
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line;
StringBuilder stringBuilder = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
result = stringBuilder.toString();
bufferedReader.close();
inputStream.close();
} else {
result = "Error: " + responseCode;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(String result) {
try {
JSONObject jsonObject = new JSONObject(result);
String value = jsonObject.getString("key"); // 替换"key"为你期望获取的键名
// 处理获取到的数据
} catch (JSONException e) {
e.printStackTrace();
Log.e(TAG, "JSONException: " + e.getMessage());
}
}
}
在调用PHPConnection类的地方,传递URL和JSON字符串作为参数。确保替换“key”为你期望获取的键名。通过检查返回的JSON数据是否存在该键名,可以避免“undefined index”错误。