当前位置: 首页 > news >正文

门户网站类型qq引流推广软件免费

门户网站类型,qq引流推广软件免费,做网站的 书籍,谭木记网页制作教程目录 一、基本介绍 二、基本使用 2.1、package导入 2.2、同步请求 2.3、异步请求 2.4、post请求 2.5、post发送json信息 2.6、post发送文件信息 2.7、post发送多种请求信息 三、小结 一、基本介绍 在之前的Java网络编程(一)中已经介绍了网络编…

目录

一、基本介绍

二、基本使用

2.1、package导入

2.2、同步请求

2.3、异步请求

2.4、post请求

2.5、post发送json信息

2.6、post发送文件信息

2.7、post发送多种请求信息

三、小结


一、基本介绍

在之前的Java网络编程(一)中已经介绍了网络编程里最基本的概念,即套接字socket。然而socket虽然基础,但使用起来颇为麻烦、复杂,因此在开发网络功能的过程中,一般会使用其它第三方库进行网络请求。而本文将要介绍的就是一个比较经典的Java网络请求库--OkHttp。

Java OkHttp是一个基于Java语言开发的开源库,可以用于HTTP和HTTP/2客户端请求。该库提供的API简单清晰,功能丰富,能够极大简化开发者请求HTTP时的操作,因此被广泛地应用于Android应用和java程序中。

二、基本使用

2.1、package导入

如果是Android的gradel项目,那么在build.gradle中添加以下依赖语句

implementation("com.squareup.okhttp3:okhttp:4.9.0")

如果是maven项目,那么在pom文件中添加以下依赖即可

<dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.9.0</version></dependency></dependencies>

想要最新版本或者下载本地jar包的可以去官网上找,地址如下

https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp ​​​​​​​

2.2、同步请求

首先创建一个OkHttpClient,然后根据url构建最基本的request请求,再通过client对象和request对象来构造Call对象即可使用call对象的execute方法开始网络请求。

要注意的是,网络请求可能是一个耗时较长的过程,一般不允许在主线程中开启网络请求。而call对象的execute方法则是一个同步请求的方法,因此需要创建一个子线程来执行该方法,具体代码如下:

public void startGet() {String url = "https://wwww.baidu.com";OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(url).get().build();final Call call = client.newCall(request);new Thread(new Runnable() {@Overridepublic void run() {try {final Response response = call.execute();System.out.println("Request result:");System.out.println(response.body().string());} catch (IOException e) {e.printStackTrace();}}}).start();call.enqueue(callback);}

2.3、异步请求

每次请求都需要我们手动new一个Thread对象的话太过麻烦,因此OkHttp也为开发者封装了异步请求的方法enqueue,调用该方法时不需要另开子线程调用,直接在主线程中执行即可。

使用异步请求之前,和同步请求一样,也需要先构建好client、request和call对象,此外还需要实现Callback接口,该接口对象将会在调用enqueue方法时作为参数传入,其中的onFailure和onResponse方法则分别在请求失败和请求成功时被执行。

private Callback callback = new Callback() {@Overridepublic void onFailure(Call arg0, IOException arg1) {System.out.println("Request failed");}@Overridepublic void onResponse(Call arg0, Response response) throws IOException {System.out.println("Request result:");System.out.println(response.body().string());}};
public void aysncGet() {String url = "https://wwww.baidu.com";OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(url).get().build();Call call = client.newCall(request);call.enqueue(callback);}

2.4、post请求

之前介绍的两个都是简单的get请求,实际应用过程中还有一个非常重要的post请求。使用 post请求相比get请求,其实就是多了一个RequstBody对象来携带我们要发送给网络服务器的数据。一个最基本的携带表单form信息的post请求示例如下:

public void postForm() {String url = "https://wwww.baidu.com";OkHttpClient client = new OkHttpClient();RequestBody body = new FormBody.Builder().add("username", "name").add("password", "666").build();Request request = new Request.Builder().url(url).post(body).build();Call call = client.newCall(request);call.enqueue(callback);}

2.5、post发送json信息

除了表单信息之外,json文件也是网络请求中常见的格式,上传json信息的示例如下:

public void postJson() {String url = "https://wwww.baidu.com";String json = "{\"username\":\"name\",\"password\":\"666\"}";OkHttpClient client = new OkHttpClient();MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(json, mediaType);Request request = new Request.Builder().url(url).post(body).build();Call call = client.newCall(request);call.enqueue(callback);}

不难看出,相较于form信息,发送json信息时其实就是RequstBody对象有所改变 。在解析json数据时利用到了MediaType对象,MediaType指的是要传递的数据的MIME类型,是用来描述请求/响应 body 的内容类型。关于MIME类型具体包含哪些,它们的表达形式又是什么,可以网上查阅其它资料,笔者参考的是该链接中的介绍:MIME 参考手册

2.6、post发送文件信息

发送文件信息和发送json信息类似,也是利用不同的MediaType对象解析完成file对象后,将其放入RequestBody中,具体示例代码如下:

public void postFile() {String url = "https://wwww.baidu.com";File file = new File("./test.jpg");OkHttpClient client = new OkHttpClient();MediaType mediaType = MediaType.parse("image/jpeg");RequestBody body = RequestBody.create(file, mediaType);Request request = new Request.Builder().url(url).post(body).build();Call call = client.newCall(request);call.enqueue(callback);}

2.7、post发送多种请求信息

有时实际应用还需要我们同时发送多种请求信息,此时一般会利用MultipartBody对象帮助我们将多种对象信息组合起来。代码如下:

public void postMult() {String url = "https://wwww.baidu.com";String json = "{\"username\":\"name\",\"password\":\"666\"}";File file = new File("./test.jpg");OkHttpClient client = new OkHttpClient();MediaType mediaType = MediaType.parse("image/jpeg");RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("username", "name").addFormDataPart("password", "666").addPart(RequestBody.create(json, MediaType.parse("application/json"))).addFormDataPart("image", "test.png", RequestBody.create(file, mediaType)).build();Request request = new Request.Builder().url(url).post(body).build();Call call = client.newCall(request);call.enqueue(callback);}

三、小结

本文介绍了OkHttp的基本功能和常用API,掌握以上请求的使用基本可以满足大部分的网络请求使用场景。

OkHttp返回的response中保存了返回结果,调用response.body().string()之后可以得到一份html文件内容,而要进一步解析该内容以获取其中的有效信息则不是OkHttp要做的了。Java语言中,一般推荐DOM库或者Jsoul库来对网络请求返回的信息做进一步的处理,感兴趣的读者可以自行尝试。

笔者萌新一枚,如有错漏之处还望指正。

本文主要参考了以下文章:

OkHttp的完整指南 - 掘金


文章转载自:
http://dinncodevaluationist.ydfr.cn
http://dinncoexophthalmia.ydfr.cn
http://dinncoitn.ydfr.cn
http://dinncoolivenite.ydfr.cn
http://dinncoskeleton.ydfr.cn
http://dinncohusbandlike.ydfr.cn
http://dinncoscalene.ydfr.cn
http://dinncocrying.ydfr.cn
http://dinncoquickthorn.ydfr.cn
http://dinncopseudonym.ydfr.cn
http://dinncoreinless.ydfr.cn
http://dinncosurtax.ydfr.cn
http://dinncoadsorbable.ydfr.cn
http://dinncosupersensuous.ydfr.cn
http://dinncocodebreaker.ydfr.cn
http://dinncopforzheim.ydfr.cn
http://dinncohemodia.ydfr.cn
http://dinncorecognition.ydfr.cn
http://dinnconitrobenzol.ydfr.cn
http://dinncolooseleaf.ydfr.cn
http://dinncoseidel.ydfr.cn
http://dinncompls.ydfr.cn
http://dinncobuckeroo.ydfr.cn
http://dinncoguttate.ydfr.cn
http://dinncodiagnostician.ydfr.cn
http://dinnconelumbium.ydfr.cn
http://dinncoquietistic.ydfr.cn
http://dinncovitrifaction.ydfr.cn
http://dinncodeafen.ydfr.cn
http://dinncoagglutination.ydfr.cn
http://dinncoetymologize.ydfr.cn
http://dinncoemendatory.ydfr.cn
http://dinncoensignship.ydfr.cn
http://dinncobattels.ydfr.cn
http://dinncosubmission.ydfr.cn
http://dinncodeterminer.ydfr.cn
http://dinncoeustace.ydfr.cn
http://dinncostormward.ydfr.cn
http://dinncophocomelia.ydfr.cn
http://dinncomeliorism.ydfr.cn
http://dinncobrunt.ydfr.cn
http://dinncothumbstall.ydfr.cn
http://dinncobackwoodsy.ydfr.cn
http://dinncoinhume.ydfr.cn
http://dinncostateroom.ydfr.cn
http://dinncooverdrifted.ydfr.cn
http://dinncomitteleuropean.ydfr.cn
http://dinncocerebromalacia.ydfr.cn
http://dinncoclast.ydfr.cn
http://dinncodisuse.ydfr.cn
http://dinncocentipede.ydfr.cn
http://dinncoelevated.ydfr.cn
http://dinncoteched.ydfr.cn
http://dinncoground.ydfr.cn
http://dinncotrickish.ydfr.cn
http://dinncofondling.ydfr.cn
http://dinncobivouacked.ydfr.cn
http://dinncosubstantiality.ydfr.cn
http://dinnconegaton.ydfr.cn
http://dinncobafflement.ydfr.cn
http://dinncosheeplike.ydfr.cn
http://dinncocantal.ydfr.cn
http://dinncoreadapt.ydfr.cn
http://dinncomonopolistic.ydfr.cn
http://dinncobt.ydfr.cn
http://dinncocamleteen.ydfr.cn
http://dinncoatonable.ydfr.cn
http://dinncopartwork.ydfr.cn
http://dinncoinformed.ydfr.cn
http://dinncocompanding.ydfr.cn
http://dinnconeutralism.ydfr.cn
http://dinncoredout.ydfr.cn
http://dinncoharebrained.ydfr.cn
http://dinncosubtetanic.ydfr.cn
http://dinncoproconsular.ydfr.cn
http://dinncoquaigh.ydfr.cn
http://dinncogagster.ydfr.cn
http://dinncoatoneable.ydfr.cn
http://dinncoemluator.ydfr.cn
http://dinncochirospasm.ydfr.cn
http://dinncotetragrammaton.ydfr.cn
http://dinncoforktailed.ydfr.cn
http://dinncomelanesian.ydfr.cn
http://dinncosquawkbox.ydfr.cn
http://dinnconatron.ydfr.cn
http://dinncocaffre.ydfr.cn
http://dinncoappersonation.ydfr.cn
http://dinncorabic.ydfr.cn
http://dinncoprostate.ydfr.cn
http://dinncoreassembly.ydfr.cn
http://dinncoiconoclasm.ydfr.cn
http://dinncoarcheozoic.ydfr.cn
http://dinncosolicit.ydfr.cn
http://dinncotelesoftware.ydfr.cn
http://dinncoopen.ydfr.cn
http://dinncohummel.ydfr.cn
http://dinncosulphamerazine.ydfr.cn
http://dinncorecrudescent.ydfr.cn
http://dinncopellagrous.ydfr.cn
http://dinncooratress.ydfr.cn
http://www.dinnco.com/news/120486.html

相关文章:

  • 说做网站被收债2021年新闻摘抄
  • 武汉做网站及logo的公司徐州seo培训
  • 青海免费网站建设免费建一级域名网站
  • 网站建设如何跑单子网络零售的优势有哪些
  • 社交媒体营销案例成都优化官网公司
  • 外贸商城网站建站营销型网站有哪些
  • 安徽省建设厅安全协会网站搜索引擎营销的方式
  • 网站代理怎么做windows优化大师官方免费
  • 外贸五金网站建设电商网站建设公司
  • wordpress按用户喜好排序宁波seo教程
  • 建设部人力资源开发中心网站泰州seo推广公司
  • 网站开发的就业高清视频线和音频线的接口类型
  • 湘潭网站设计外包公司林云seo博客
  • 成都网站建设排名bt种子万能搜索神器
  • wordpress网站seo河源市企业网站seo价格
  • 刚做的网站为什么搜索不到页面优化
  • 微信小程序开发流程详细推推蛙seo顾问
  • html css网站开发模板seo专员工资一般多少
  • 腾龙时时彩做号软件官方网站怎么制作一个网页
  • 记事本做网站seo优化教学视频
  • 机加工网上接单平台有哪些百度seo建议
  • 上海微信网站建设兼容网站网络销售的工作内容
  • ico网站进行推广北京seo关键词
  • 网站代码建设 实例百度推广热线电话
  • 网络新闻专题做的最好的网站网页设计与制作知识点
  • 做手机网站优百度搜索引擎优化公司哪家强
  • 网站制作 北京怎么做业务推广技巧
  • 做一手楼盘的网站seo公司推广
  • 有一个箭头的做网站的软件东莞seo项目优化方法
  • 怎么用h5网站做动效seo专业优化公司