【安卓开发】Android初级开发(okhttp3发送带header与带参数的GET请求)

1.首先需要先加入相应依赖

dependencies{implementation 'com.squareup.okhttp3:okhttp:3.13.1'
implementation 'com.squareup.okio:okio:2.2.2'}

2.加入互联网权限

    <!-- 互联网 --><uses-permission android:name="android.permission.INTERNET" /> <!-- 查看网络状态 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 开关网络状态 --><uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

3.加入网络白名单 

相关链接

package xxxxxxxxxxxxxxxxxxx;import android.util.Log;import java.io.IOException;
import java.time.LocalTime;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;import okhttp3.Headers;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;public class HttpUtils {//发送get请求,带参数public static Map<String, Object> sendGet_body(String url, Map<String, String> map_header, Map<String, String> map_body) throws IOException, IOException {//添加headerHeaders.Builder builder_header = new Headers.Builder();for (String key : map_header.keySet()) {builder_header.add(key, Objects.requireNonNull(map_header.get(key)));}Headers headers = builder_header.build();//添加bodyHttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder();for (String key : map_body.keySet()) {Log.d(key,Objects.requireNonNull(map_body.get(key)));urlBuilder.addQueryParameter(key, map_body.get(key));}//发送请求OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(urlBuilder.build()).headers(headers).build();LocalTime startTime = LocalTime.now();//响应开始时间Response response = client.newCall(request).execute();LocalTime endTime = LocalTime.now();//响应结束时间int code = response.code();Log.d("HTTP返回代码",String.valueOf(code));if (code != 200) {Log.e("HTTP连接提示", "http连接失败");}Map<String, Object> map = new HashMap<>();map.put("code", code);Log.d("获取body内容",Objects.requireNonNull(response.body()).string());response.close();return map;}}

4.1     Request是OkHttp中访问的请求包含以下这些, URL请求的网络地址;method方法,包括get , post ;   headers 请求头    body  请求体 。Builder是辅助类。

 

4.2    Call负责发送情况并接受返回,Response即OkHttp中的响应,

同步阻塞方法:

异步请求方法:

Callback中okhttp请求失败会调用 onFailure   , 其他情况会调用 onResponse    

 

 

4.3 Response包含内容

  response.isSuccessful() //用来判断是否获取响应内容String  string = response.body().string(); //body获取响应体,string转换为string类型字符串

完整的网络请求

package com.sina.myokhttp;import android.renderscript.RenderScript;import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Headers;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;public class OkhttpGetORPost {private final OkHttpClient httpClient = new OkHttpClient();//同步阻塞的GET方法public void OkHttpGet() throws IOException {//防止在主UI线程中阻塞,使用后台线程ExecutorService executorService = Executors.newSingleThreadExecutor();executorService.submit(new Runnable() {@Overridepublic void run() {Request.Builder builder = new Request.Builder();builder.url("http://china.cn");Request request = builder.build();Call call = httpClient.newCall(request);try {//取出了返回的对象Response response = call.execute();if(response.isSuccessful()){//判断对象是否为空response.body().toString();}} catch (IOException e) {e.printStackTrace();}}});}//POST异步请求public void OkHttpPost(){//确定类型final MediaType JSON =MediaType.parse("application/json; charset=utf-8");Request.Builder builder = new Request.Builder();builder.url("http://china.cn");builder.post(RequestBody.create(JSON,""));Request request = builder.build();Call call =  httpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {if(response.isSuccessful()){//判断对象是否为空response.body().toString();}}});}//携带Head的POST异步请求public void OkHttpPostHead(){Request.Builder builder = new Request.Builder();builder.url("http://china.cn");Request request = builder.build();Call call =  httpClient.newCall(request);call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {}@Overridepublic void onResponse(Call call, Response response) throws IOException {//获取响应的CODEint code = response.code();//获取HeadsHeaders headers = response.headers();//获取Content-TypeString contentType = headers.get("Content-Type");}});}}

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 文件保存在内存_如何掌握Java内存(并保存程序)

java 文件保存在内存通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用&#xff01; 您花费了无数小时来解决Java应用程序中的错误并在需要的地方获得其性能。 在测试过程中&#xff0c;您注意到应用程序随着时间的…

sql 返回日期的年月部分_公示|2020年11月部分志愿活动名单公示

2020年11月部分志愿活动名单公示2020年11月18日人文与法学学院院楼协助分发教职工运动会服装志愿活动2020年11月19日人文与法学学院院楼“收彩旗”志愿活动2020年11月20日人文与法学学院组织观看2020年全国科学道德和学风建设宣讲教育报告会直播志愿活动(此活动不录入i志愿)202…

【安卓开发 】Android初级开发(三)动画

逐帧动画 方法一&#xff0c;在xml中设置 1.先将图片加入drawable 2.在drawable中新建xml,设置每一帧的图片和时间 <?xml version"1.0" encoding"utf-8"?> <animation-list xmlns:android"http://schemas.android.com/apk/res/android&…

javafx swing_Swing应用程序中的JavaFX 8 DatePicker

javafx swing1.概述 本文显示了一个使用JavaFX 8 DatePicker控件的Java SE 8 Swing应用程序的示例。 DatePicker控件允许用户以文本形式输入日期或从日历弹出窗口中选择日期。 本示例使用其中带有FX控件的Swing JFrame 。 为了将FX内容嵌入Swing应用程序中&#xff0c; javafx…

cup过高是什么意思_做青和焙火有什么关系?

武夷岩茶制作工艺复杂&#xff0c;环环相扣&#xff0c;每一步工艺对下一步工艺都有很大的影响&#xff0c;经过一系列的生化变化&#xff0c;最终呈现一杯好茶在我们面前&#xff0c;那我们最关心的做青和焙火两个问题&#xff0c;有什么影响呢&#xff1f;它们之间既有因果关…

【安卓开发 】Android初级开发(四)ListView

ListView的实现步骤 1.单独一行的布局可以如下 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width&…

platform_SpringOne Platform 2016回顾

platform我最近结束了在拉斯维加斯参加SpringOne Platform会议的总结。 这是我第一次参加SpringOne。 这是聆听演讲并与软件开发领域的一些顶级专家进行对话的一种体验。 如果您没有参加SpringOne&#xff0c;那么您肯定会想要阅读这篇文章。 我们将讨论这四个主题&#xff0c…

不能装载文档控件。请在检查浏览器的选项中检查浏览器的安全设置_【网络安全宣传周】网络安全小黑板 | 如何正确设置浏览器...

李夏是一个公司的职员&#xff0c;一天晚上加班赶制文档&#xff0c;由于要向客户汇报产品情况&#xff0c;需要获取大量网上信息&#xff0c;然而在制作中却发现浏览器的网页打不开了。第二天原计划向客户展示的材料未能完整汇总&#xff0c;客户见面对接效果也打了折扣。在当…

【安卓开发 】Android初级开发(五)自定义View

1.自定义View的构造函数调用的场景 package com.sina.myapplication;import android.content.Context; import android.util.AttributeSet; import android.view.View;import androidx.annotation.Nullable;public class Textview extends View {//在new Textview类的时候调用…

kafka分布式_带有Kafka和ZeroMQ的分布式类星体演员

kafka分布式因此&#xff0c;您已经有了使用actor的精美设计&#xff0c;选择了JVM和Quasar在该主题上的强大而忠实的观点。 所有明智的决定&#xff0c;但是在集群上进行分配时您有什么选择呢&#xff1f; 星系 Galaxy是一个非常酷的选择&#xff1a;快速的内存中数据网格&am…

vs 不能自动 析构函数_深入理解C++虚函数的override、overload与hide以及虚析构函数...

今天主要讲的是虚函数的override与overload的区别。首先我们来看一段代码&#xff1a;示例代码#include <stdio.h>#include <string>#include <iostream>#include <complex>using namespace std;class Father{public: Father(); ~Father(); virtual vo…

【开源项目】C++BASE64图像编解码算法

ZBase64.h #pragma once #include <string> using namespace std; class ZBase64 { public:ZBase64(void);~ZBase64(void);/*编码DataByte[in]输入的数据长度,以字节为单位*/string Encode(const unsigned char* Data, int DataByte);/*解码DataByte[in]输入的数据长度,…

log4j2 xsd_Log4j 2.x XSD的描述不完整

log4j2 xsd在博客文章JAXB和Log4j XML配置文件中 &#xff0c;我讨论了“与使用JAXB通过Java类处理[Log4j 1.x和Log4j 2.x] XML配置文件相关的细微差别。” 在本文中&#xff0c;我将探讨与通过Log4j 2.x XML Schema文件Log4j-config.xsd生成的JAXB对象生成Log4j 2.x配置XML相关…

tampermonkey怎么不能用了_普洱茶发霉了怎么办?能不能用太阳晒

大家都知道普洱茶要储藏在通风干燥的地方&#xff0c;如果储存不恰当就可能变质发霉。而且普洱茶很容易吸味&#xff0c;需要存放到干净的环境并避免日晒。当发现茶叶发霉的现象比较严重时&#xff0c;需要直接扔掉。如果不严重&#xff0c;可以采用以下方法&#xff1a;千万不…

java开发常见异常_最常见的Java异常及其对Java开发人员的评价

java开发常见异常我知道我说过在完成视频之前我不会发帖&#xff0c;但这一直困扰着我。 至于视频的更新&#xff0c;我有些懒散&#xff0c;有些忙碌&#xff0c;但是我已经准备好记录第一集&#xff0c;这是我第一次有机会&#xff0c;而且我不需要太多的编辑。 无论如何&…

vue 动态变量名_【告别复制粘贴】动态模板生成小技巧

? 这是第 75篇不掺水的原创&#xff0c;想要了解更多&#xff0c;请戳上方蓝色字体&#xff1a;政采云前端团队关注我们吧&#xff5e;本文首发于政采云前端团队博客&#xff1a;告别复制粘贴&#xff1a;动态模板生成小技巧https://www.zoo.team/article/dynamic-template-ge…

【安卓开发 】Android初级开发(六)Activity生命周期

Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d("Activity生命周期","onCreate创建页面");}Overrideprotected void onStart() {super.onStart();Log.d(…

jboss项目导入idea_如何导入任何JBoss BRMS示例项目

jboss项目导入idea在过去几周内&#xff0c;JBoss BRMS演示的用户反复询问我以下内容时&#xff0c;会给您这些提示和技巧&#xff1a; “如何将与各种JBoss BRMS演示项目相关的项目导入到我自己的现有安装中&#xff1f;” 这意味着用户希望在个人安装产品时有一个示例项目&…

amos看拟合度在哪里看_哪里可以看亲爱的热爱的电视剧全集

由杨紫、李现、胡一天、张格出演的暖心甜宠剧《亲爱的&#xff0c;热爱的》正在热播中。该剧根据墨宝非宝小说《蜜汁炖鱿鱼》改编&#xff0c;讲述了一场高智商与高情商的甜萌梦幻爱情故事。剧中李现饰演的高冷G神和杨紫饰演的萌妹学霸&#xff0c;从开头的一见钟情到后面的相处…

【开源项目】Android下自定义HASH【支持一个key对应多个value--根据key排序】

package com.peace.love.carpo_test.tool;import java.util.List; import java.util.Map; import java.util.Set;/*** <p>Can save multiple the value of the map.</p>* Created in 2021/2/20.** author 一笑奈何;*/ public interface HongDou_MultiValueMap<K…