安桌开发中怎么调用API接口,我的接口为"https://yurl6.cn/user/api.php" 请求方式为post,提交信息为“curl=text2”,返回值用result返回,并帮我规避app闪退问题,以及返回信息用toast提示出来
时间: 2023-12-03 20:47:33 浏览: 29
在 Android 中,您可以使用 HttpURLConnection 或 OkHttp 等库来调用 API 接口。下面是一个使用 HttpURLConnection 的示例代码:
```java
public class MyTask extends AsyncTask<Void, Void, String> {
private String url;
private String data;
private Context context;
public MyTask(String url, String data, Context context) {
this.url = url;
this.data = data;
this.context = context;
}
@Override
protected String doInBackground(Void... voids) {
try {
URL urlObj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
wr.close();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
reader.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
Toast.makeText(context, result, Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "请求失败", Toast.LENGTH_SHORT).show();
}
}
}
```
您可以使用如下代码来执行该任务:
```java
MyTask task = new MyTask("https://yurl6.cn/user/api.php", "curl=text2", this);
task.execute();
```
这里的第一个参数是 API 接口的 URL,第二个参数是提交的信息,第三个参数是应用程序的上下文。在 `onPostExecute` 方法中,我们可以根据返回值来显示提示信息。
app 闪退问题可能与网络操作在主线程中执行有关。可以使用 AsyncTask 或 Thread 来在后台线程中执行网络请求。
此外,为了避免 NetworkOnMainThreadException 异常,您也可以在 AndroidManifest.xml 文件中添加以下代码:
```xml
<uses-permission android:name="android.permission.INTERNET" />
```
这样就可以在应用程序中使用网络功能了。