首页 » 网站建设 » phpurlpost办法技巧_OkHttp的基本运用Post请求

phpurlpost办法技巧_OkHttp的基本运用Post请求

访客 2024-11-14 0

扫一扫用手机浏览

文章目录 [+]

Post(当涉及到参数的安全问题或者参数比较大的时候,该当利用Post要求办法),比如:

上岸注册上传支付下单...

Get(Get便是获取的意思,项目开拓中,如果是相对大略的查询类接口可以利用Get要求办法),比如:

phpurlpost办法技巧_OkHttp的基本运用Post请求

获取图片获取文章详情...

以上便是Get和Post的一个大略的先容,对刚入门的android程序员该当会有点帮助。
然后,接下来我们开始OkHttp的Post要求办法的学习。

phpurlpost办法技巧_OkHttp的基本运用Post请求
(图片来自网络侵删)
Post的同步要求办法(在android的主线程中,须要将下面的代码放在new Thread的run方法中实行,否则报错(缺点详见))OkHttpClient okHttpClient = new OkHttpClient(); //Form表单格式的参数通报 FormBody formBody = new FormBody .Builder() .add(\公众goodsId\"大众,\"大众2799\"大众)//设置参数名称和参数值 .build(); Request request = new Request .Builder()<font color=\公众royalblue\公众> .post(formBody)//Post要求的参数通报,此处是和Get要求比较,多出的一句代码</font>.url(Config.POST_URL) .build(); try { Response response = okHttpClient.newCall(request).execute(); String result = response.body().string(); Log.d(\"大众androixx.cn\"大众,result); response.body().close(); } catch (IOException e) { e.printStackTrace(); }

复制代码

以上是一个Post同步要求办法代码。
Post要求的重点在参数的通报办法,也便是代码的第9行.post()方法。
post()方法中的参数是要通报到后台做事器的参数,是一个RequestBody类型的参数。
其他的代码同Get要求的基本同等。

在实际项目开拓中,只假如利用Post要求办法的,都涉及参数通报。
文章开头也说了,Post和Get要求的最大的不同点就在参数通报,以是接下来我们先容一下Post的各种格式的参数通报。
(把稳:对付初学者,将视线重点放在Post和Get的参数通报办法上来学习OkHttp要求可能要更直不雅观一些,也可能更随意马虎理解)。

Form表单数据的通报(上面的代码中的FormBody便是表单参数的设置办法,表单数据的通报就不重复帖代码,代码同上)Json格式数据的通报//设置媒体类型。
application/json表示通报的是一个json格式的工具 MediaType mediaType = MediaType.parse(\公众application/json\"大众); //利用JSONObject封装参数 JSONObject jsonObject = new JSONObject(); try { jsonObject.put(\"大众参数名\公众,\"大众参数值\公众); } catch (JSONException e) { e.printStackTrace(); } //创建RequestBody工具,将参数按照指定的MediaType封装 RequestBody requestBody = RequestBody.create(mediaType,jsonObject.toString()); Request request = new Request .Builder() .post(requestBody)//Post要求的参数通报 .url(Config.POST_URL) .build(); try { Response response = okHttpClient.newCall(request).execute(); String result = response.body().string(); Log.d(\"大众androixx.cn\"大众,result); response.body().close(); } catch (IOException e) { e.printStackTrace(); }

复制代码

以上代码便是Json格式的数据通报。
代码中的MediaType指定通报的数据类型,是一种MIME类型,比如application/json、application/octet-stream、application/xml等详细参考这里。

比拟Form表单数据通报和Json格式数据通报,对付纯粹的android程序员来说,可能以为一个利用的是FormBody、一个利用的是RequestBody+Json,彷佛没有什么不同,都是key:value格式。
但是对付Web后台吸收的办法会有所不同,以是将原来该当是Form表单参数改成Json参数通报,后台将接管不到前端通报的参数,由于其媒体类型(MediaType)不一样。

String字符串通报

如果通报的便是一个纯粹的String字符串,可以将MediaType类型换成“text/plain\公众.

解释:对付android程序员怎么知道该利用Form表单格式的数据通报办法,还是Json格式的数据通报办法?这个问题取决于后台的数据吸收逻辑;以是,在实际开拓中如果没有分外解释的情形下,默认采取表单格式的数据通报;如果有分外解释,那根据解释内容进行通报。
不过,目前大多数公司要么采取form表单,要么采取Json(说白了,Json实在便是一个分外格式的String工具)。

Post异步要求

Post异步要求只须要将同步要求中的execute方法换成enqueue方法。

OkHttpClient okHttpClient = new OkHttpClient(); //Form表单格式的参数通报 FormBody formBody = new FormBody .Builder() .add(\"大众username\公众,\"大众androidxx.cn\"大众)//设置参数名称和参数值 .build(); Request request = new Request .Builder() .post(formBody)//Post要求的参数通报 .url(Config.LOCALHOST_POST_URL) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) {} @Override public void onResponse(Call call, Response response) throws IOException { //此方法运行在子线程中,不能在此方法中进行UI操作。
String result = response.body().string(); Log.d(\"大众androixx.cn\"大众, result); response.body().close(); } });

复制代码

总结

OkHttp是一个类似HttpUrlConnection的一个框架。

OkHttp是一个可以在Java项目和Android项目中利用的框架。
以是其内部并没有Handler类来完成线程间的通信。
以是,对付android而言,其返回的结果都是在子线程中。
须要程序人自己写Handler完成数据通报。

OkHttp的Post和Get要求都有2中办法:同步和异步。
个中同步要求不能直接在UI线程中进行。

Get和Post只是Http协议中的一块,2者的紧张差异在数据的通报。
学些的时候,可以从数据的通报入手去理解它们。

OkHttp利用建议在一个项目中只有一个OkHttp工具。
利用前可以对OkHttp进行封装。

大略单纯封装代码如下:/ Created by yangjw on 2016/4/24. url:androidxx.cn desc:TODO/public class OkHttpUtil { //担保OkHttpClient是唯一的 private static OkHttpClient okHttpClient; static Handler mHandler = new Handler(); static { if (okHttpClient == null) { okHttpClient = new OkHttpClient(); } } / Get要求 @param url @param callback 回调函数 / public static void httpGet(String url, final IOkCallBack callback) { if (callback == null) throw new NullPointerException(\"大众callback is null\"大众); Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { mHandler.post(new Runnable() { @Override public void run() { callback.onException(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); mHandler.post(new Runnable() { @Override public void run() { callback.onSuccess(result); } }); response.body().close(); } }); } / Post要求 @param url @param params 参数 @param callback 回调函数 / public static void httpPost(String url,Map<String,String> params,final IOkCallBack callback) { if (callback == null) throw new NullPointerException(\"大众callback is null\"大众); if (params == null) throw new NullPointerException(\"大众params is null\"大众); FormBody.Builder formBodyBuilder = new FormBody.Builder(); Set<String> keySet = params.keySet(); for(String key:keySet) { String value = params.get(key); formBodyBuilder.add(key,value); } FormBody formBody = formBodyBuilder.build(); Request request = new Request .Builder() .post(formBody) .url(url) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { mHandler.post(new Runnable() { @Override public void run() { callback.onException(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { final String result = response.body().string(); mHandler.post(new Runnable() { @Override public void run() { callback.onSuccess(result); } }); response.body().close(); } }); }}

复制代码

标签:

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读0 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读0 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读0 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读0 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读0 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读0 评论0