如何使用Android Studio发送一个简单的GET/POST网络请求

阅读文章需知

开发环境:Android Studio 4.1 安卓虚拟机版本(Target)android 11
开发语言: JAVA (如果是Kotlin 那么勿怪小弟打扰了)

本着点赞投币一键三连不迷路的原则,小编第一句话就把开发环境给出,避免版本相差太多而浪费您的时间。

感谢各位大佬们打开小弟的文章,本篇文章纯粹针对于那些对于Android Studio开发的萌新们,文章所涉及的知识水平非常浅,不喜勿喷。纯属是为了让萌新们在初学的时候少踩坑(毕竟小弟在写这篇文章之前所踩的坑,那可真是就差没拿个“高端探雷测试器”过来为我指点一下迷津)。
不得不自夸一下,本篇文章对于萌新们绝对是一篇让你感动到痛哭流泪的文章。毕竟咱这十头牛都拉不回正确的道路,在犯错的歧途上越走越远的水平也真是够可怜的。
在这里插入图片描述

前提准备

众所皆知,咱们首先就要创建一下非常完美且正确的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);

使用也是非常的简单,只要在上面网络请求的代码后面添加上这三句代码就可以了。 是不是很简单~
在这里插入图片描述

后文必读

本文所有内容全是小编本人各种踩坑之后的经验之谈,如有任何错误,欢迎留言指正!

若本文有任何侵权的行为,请联系本人邮箱2196316793@qq.com。我会在第一时间删除,谢谢!

在这里插入图片描述

能点赞投币一键三连嘛?

好像咱csdn不兴这个,那就欢迎大家白嫖吧~

希望大家通过本篇文章可以在发送简单的网络请求时可以少踩坑、不踩坑。

如果本文的方法无效,那么小编祝你下篇文章一定能成功!
在这里插入图片描述

Android Studio是一款用于开发Android应用程序的集成开发环境(IDE),它通过提供丰富的功能和工具,让开发者可以更轻松地构建和调试Android应用。 要发送POST请求,我们需要在项目的build.gradle文件中添加网络请求库的依赖。例如,我们可以使用OkHttp库,可以在build.gradle文件中的dependencies块中添加以下代码: implementation 'com.squareup.okhttp3:okhttp:4.9.0' 接下来,在我们的活动或片段类中创建一个方法来发送POST请求。这种发送请求的简便方法是使用AsyncTask类的doInBackground()方法在后台线程中执行网络请求。示例如下: private class MyAsyncTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { String url = params[0]; String postData = params[1]; OkHttpClient client = new OkHttpClient(); RequestBody body = RequestBody.create(MediaType.parse("application/json; charset=utf-8"), postData); Request request = new Request.Builder() .url(url) .post(body) .build(); try { Response response = client.newCall(request).execute(); return response.body().string(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { // 在这里处理响应结果 } } 然后,在我们的活动或片段类中创建一个实例并执行AsyncTask来发送POST请求。我们需要传递URL和要发送的数据作为参数。示例如下: String url = "https://example.com/api"; String postData = "{ \"name\": \"John\", \"age\": 30 }"; MyAsyncTask task = new MyAsyncTask(); task.execute(url, postData); 在AsyncTask的onPostExecute()方法中,我们可以处理响应结果,并更新UI或执行其他操作。这里的示例代码只是简单地打印响应结果,你可以根据自己的需求进行相应的处理。 这就是使用Android Studio发送POST请求简单示例。请注意,这只是一个基本示例,实际应用中可能需要处理更多的逻辑和错误处理。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值