Android Studio发送简单的GET/POST网络请求
- 阅读文章需知
- 前提准备
- 权限添加
- 启动子线程,发送网络请求
- POST请求如何添加参数?
- 后文必读
阅读文章需知
开发环境:Android Studio 4.1 安卓虚拟机版本(Target)android 11
开发语言: JAVA
前提准备
众所皆知,咱们首先就要创建一下非常完美且正确的android项目
权限添加
<manifest >
<application> .......</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
此代码一定要添加在<manifest>
标签之内,<application>
标签之外。
想必添加到其他的位置AS(Android Studio)也会给你报错,但是就怕报错了还不知道发生了什么= =
那么这是不是就🆗了呢? 这就🆗了我还要写这篇文章干啥呢 对吧😁
<application
...
...
android:usesCleartextTraffic="true"
...>
<activity>
...
...
</activity>
</application>
在你的<application>
里面添加一句android:usesCleartextTraffic="true"
是必不可少的一步,假设你没有这一步,那么你熟悉的老朋友就会来见你啦
启动子线程,发送网络请求
new Thread(){
@Override
public void run() {
networkRequest();
}
}.start();
开启一个子线程之后,在子线程中完成网络请求的处理。小弟建议将网络请求的代码封装一个函数,当然,萝卜青菜,各有所爱。
private void networdRequest(){
HttpURLConnection connection=null;
try {
URL url = new URL("你要请求的网址,比如www.某度.com");
connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(3000);
connection.setReadTimeout(3000);
//设置请求方式 GET / POST 一定要大小
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(false);
connection.connect();
int responseCode = connection.getResponseCode();
if (responseCode != HttpURLConnection.HTTP_OK) {
throw new IOException("HTTP error code" + responseCode);
}
String result = getStringByStream(connection.getInputStream());
if (result == null) {
Log.d("Fail", "失败了");
}else{
Log.d("succuss", "成功了 ");
}
} catch (Exception e) {
e.printStackTrace();
}
}
直接贴上代码,ctrl C +V 就能用,想必其他的代码都是啥意思,大家也不关心,小弟也就不啰嗦了。值得注意的是设置请求方式的时候一定要大写,否则后果自负(报错自己改)。本文实例采取的是POST请求的方式,因而采用字符串的形式接收返回的json结果。下面贴上处理json的代码:
private String getStringByStream(InputStream inputStream){
Reader reader;
try {
reader=new InputStreamReader(inputStream,"UTF-8");
char[] rawBuffer=new char[512];
StringBuffer buffer=new StringBuffer();
int length;
while ((length=reader.read(rawBuffer))!=-1){
buffer.append(rawBuffer,0,length);
}
return buffer.toString();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
那么至此,一个简单的网络请求就基本上完成啦!
POST请求如何添加参数?
如果是学习网络请求调用后端API或者网上公开API接口的童鞋们,那么这个时候我们往往需要有一些必备的参数,那么AS如何添加参数呢?本文给出一个简单的示例:
。。。
。。。
connection.connect();
-----------------------------------------------
DataOutputStream dos=new DataOutputStream(connection.getOutputStream());
String param="My param";
dos.writeBytes(param);
使用也是非常的简单,只要在上面网络请求的代码后面添加上这三句代码就可以了。 是不是很简单~