框架git地址:附(爱一个人就要爱他(loader)的全部~)

请求方式:POST

请求示例{

"verify_info":{

"app":{

"app_id":"2e263d60-2d48-43d9-b699-6f3bdb38eff8",

"version":"1.0.0",

"api_version":160815,

"user_id":"201605131806550245"

},

"device":{

"platform":"XiaoMi Note2",

"model":"Android 4.4.2",

"factory":"XiaoMi",

"screen_size":"1920*1080",

"denstiy":2,

"imei":"352105068965016/01",

"mac":"50-8D-4F-4S-55-5D",

"gprs":"4G",

"latitude":39.972907,

"longitude":116.503154

},

"token_check":{

"access_token":"3420d0e0-ed77-45e1-8370-2b55af0a62e8",

"timestamp":"1453116822556",

"sign":"fac5ff3fce1c5890a6bae11e7670dc1f",

"client_id":"356877020056553-08002700DC94",

"sequence_id":"08002700DC94-15110519074300001",

"language":"zh-cn",

"timezone":"8"

}    },

"data":{

}}

公共响应参数:参数名类型说明示例okboolean网络请求返回状态true

codeint网络请求状态码200

messagestring网络请求状态信息ok

- dataobject返回数据内容,json数据jsonObject

响应参数示例{

"ok":true,

"code":200,

"message":"成功",

"data":{

"qlty":"良",

"txt":"多云",

"tmp":32

}

}

写法:

接口部分:ConstantNetUtil.URL_THIRD="http://192.168.200.96/"public interface DemoApi{

/**

* 单曲列表

* @param json

* @return

*/

@JSON(ConstantNetUtil.URL_THIRD+"v2/weather/weather.get.info")

Call getNetsCollectList(String json);

}

请求部分:private void doNewWork(String user_id) {

Net.getInstance().get().cancel(getClass().getName() + "MainActivityTAG");

MaterialProgressLoadingUtil.showProgressDialog(this, "加载中....");

DemoParams p = new DemoParams(user_id);

Net.build(DemoApi.class,

getClass().getName() + "MainActivityTAG").getDemoModel(ParamsUtils.just(null)).enqueue(new Callback() {

@Override

public void onResponse(Result result) {

if (result.isOK()) {

DemoWeatherModel dwm = result.getResult();

if (dwm != null) {

tv_context1.setText(dwm.getQlty() + "," + dwm.getTxt() + "," + dwm.getTmp());

}

//                    demoModel = new DemoModel();

//                    demoModel_item = new DemoModel_item();

//                    demoModel_list = new ArrayList();

//                    demoModel_item = result.getResult().getPage_info();

//                    demoModel_list = result.getResult().getFood_list();

//                    if (demoModel_list != null && demoModel_list.size() > 0) {

//                        //有数据状态

//                        //处理自己的逻辑 你要是不会 神都救不了你了~

//                        ToastUtil.showToastCenter("有数据");

//                    } else {

//                        //无数据状态

//                        //可以使用自定义布局 参考:http://liangxiao.blog.51cto.com/3626612/1851105

//                        ToastUtil.showToastCenter("无数据");

//                    }

} else {

//无网状态

//                    ToastUtil.showToastCenter("无网状态 请重新请求服务器!");

}

//                MaterialProgressLoadingUtil.dismissProgressDialog();

}

});

}

2.POST请求格式:网易云音乐对第三方提供的接口(Android平台)是经过加密安全处理的,遵守以下规则:1. 每个产品有对应的 $(productname)2. 需要引用附件中的libpoison.so3. 引用该so的Android软件的签名md5事先提供给云音乐。非该签名的软件将无法正常使用该so。(签名md5获取方法:eclipse->设置->Preferences->Android->Build->MD5 fingerprint)4. 所有接口都是用固定url:

测试环境http://api.igame.163.com/openapi/$(productname) 线上环境http://api.music.163.com/openapi/$(productname)

utf-8编码。具体请求信息放在“参数params”(参数名为params)中。

5. 接口使用请参考“第三方接口说明”,并调用so中函数来构造“参数params”的值6. 接口“歌曲的url”使用http Get,其他接口使用http Post。7. 接口“歌曲的url”每天每个设备320kbits的获取次数上限为1000次,请做好到达上限提示。建议只有在下载开始前才调用该接口。

代码调用示例:

package com.netease.cloudmusic.utils;

import android.content.Context;

import com.netease.cloudmusic.NeteaseMusicApplication;

public class NeteaseMusicUtils {static {System.loadLibrary("poison");nativeInit(NeteaseMusicApplication.getInstance());//这里改成自己的context//example//String params = getUrlParameters("/search","{\"keyword\":\"周杰伦\",\"limit\":10,\"offset\":0}\")//httpPost.post("http://music.163.com/openapi/vivo", new pair("params", params))}

/*** 初始化,必须* @param context*/public native static void nativeInit(Context context);/*** 获取请求中"params"的值* 例:如果调用搜索接口,搜索keyword=周杰伦 limit=10 offset=0* params=getUrlParameters("/search","{\"keyword\":\"周杰伦\",\"limit\":10,\"offset\":0}\")* @param requestUri 接口说明中的uri* @param paramJson 接口说明中的参数json表达,如果为空请传"{}"* @return*/public native static String getUrlParameters(String requestUri, String paramJson);}

歌单分类

Uri: /playlist/tags参数:无返回:字段类型描述

dataList标签列表

codeInteger200 正常 500 异常获取分类歌单列表

Uri: /playlist/oftag参数:字段类型描述

nameString标签名称

orderStringhot or new

limitInteger返回数据量

offsetInteger偏移

返回:

字段类型描述

dataList歌单列表

codeInteger200 正常 500 异常

hasMoreboolean是否还有更多

歌曲的Url

Uri: /url参数:字段类型描述

songIdString歌曲Id

bitrateInteger比特率(只支持320/160/96三个数值,对应320/160/96kbps)

返回:正确调用会302跳转至歌曲对应的url,可直接播放或下载。songId不存在将返回httpcode:400如果调用到达上限(每天每个设备320kbits的获取次数上限为1000次),将返回httpcode:401

歌曲的Url

Uri: /song/playurl参数:字段类型描述

songIdString歌曲Id

bitrateInteger比特率(只支持320/160/96三个数值,对应320/160/96kbps)

返回:字段类型描述

dataUrlInfoData播放音频信息

codeInteger200 正常 500 异常

写法:

接口部分:public interface NeteaseMusicApi {

//测试

@POST(ConstantNetUtil.NETEASE_MUSIC)

Call neatease(@Arg("params") String params);

/**

* nets index list

* @param params

* @return

*/

@POST(ConstantNetUtil.NETEASE_MUSIC)

Call getNetsClassifyList(@Arg("params") String params);

}

请求部分:public void getNetsClassifyList(String name, String order, int limit, int offset) {

String a = "{\"name\":\"" + name + "\",\"order\":\"" + order + "\",\"limit\":" + limit + ",\"offset\":" + offset + "}";

String b = "{\"b1\":\"" + name + "\",\"b2\":\"" + order + "\",\"b3\":\"" + limit + ", \"b4\":\"" + offset + "}";

String c = "{}";

String d = "{\"songid\":"+name+"}";

String p = NeteaseMusicUtils.getUrlParameters("/playlist/oftag", a);

NeteaseNet.build(NeteaseMusicApi.class, getClass().getName()).getNetsClassifyList(p).enqueue(new Callback() {

@Override

public void onResponse(Result result) {

if (!hasView()) {

return;

}

if (!result.isOK()) {

getView().onNetsClassifyFailure();

return;

}

if (result.getResult().getCode() == HttpURLConnection.HTTP_OK) {

if (result.getResult() != null) {

getView().onNetsClassifySuccess(result.getResult().getData(), result.getResult().isHasMore());

} else {

getView().onNetsClassifyFailure();

}

} else {

getView().onNetsClassifyFailure();

}

}

});

}

附:转义字符写法要注意:String a = "{\"name\":\"" + name + "\",\"order\":\"" + order + "\",\"limit\":" + limit + ",\"offset\":" + offset + "}";

String b = "{\"b1\":\"" + name + "\",\"b2\":\"" + order + "\",\"b3\":\"" + limit + ", \"b4\":\"" + offset + "}";

String c = "{}";

String d = "{\"songid\":"+name+"}";

String params = "{\"type\":\"" + type + "\",\"key\":\"" + key + "\"}";

3.未加密的键值对请求方式:(这里使用聚合数据demo)

{

"reason": "成功的返回",

"result": {

"stat": "1",

"data": [

{

"uniquekey": "3d2c710e656006674ca3db585d1aa30b",

"title": "痛惜!山东临沂一小女孩命丧滑雪场",

"date": "2017-02-09 15:31",

"category": "头条",

"author_name": "齐鲁壹点",

"url": "http://mini.eastday.com/mobile/170209153114657.html",

"thumbnail_pic_s": "http://07.imgmini.eastday.com/mobile/20170209/20170209153114_7d1b97e6f4a356210dbb0708f53f813e_1_mwpm_03200403.jpeg",

"thumbnail_pic_s02": "http://07.imgmini.eastday.com/mobile/20170209/20170209153114_7d1b97e6f4a356210dbb0708f53f813e_2_mwpm_03200403.jpeg",

"thumbnail_pic_s03": "http://07.imgmini.eastday.com/mobile/20170209/20170209153114_7d1b97e6f4a356210dbb0708f53f813e_3_mwpm_03200403.jpeg"

},

{

"uniquekey": "b77f92aecb69a3804c35b4146fe8eef5",

"title": "宝钢股份董事长陈德荣辞职 武钢2月14日终止上市",

"date": "2017-02-09 13:34",

"category": "头条",

"author_name": "澎湃新闻网",

"url": "http://mini.eastday.com/mobile/170209133442780.html",

"thumbnail_pic_s": "http://01.imgmini.eastday.com/mobile/20170209/20170209133442_d2ad04dc6237b87b71e182c0dda657db_1_mwpm_03200403.jpeg"

}

]

},

"error_code": 0

}

写法:

接口部分:public interface JuheApi {

@POST(SERVER_JUHE+"toutiao/index")

Call getList(@Arg("type") String type, @Arg("key") String key);

}

请求部分:/**

* 直接根据地质拼接键值对解析的请求方式

* @param type

* @param key

*/

private void doNetWork_juhe(String type, String key) {

JuheNet.getsInstance().get().cancel(getClass().getName() + "MainActivityTAG_JUHE");

JuheNet.build(JuheApi.class,getClass().getName() + "MainActivityTAG_JUHE").getList(type, key).enqueue(new Callback() {

@Override

public void onResponse(Result result) {

if (!result.isOK()){

return;

}

DemoJuheModel djm = result.getResult();

if (djm!=null){

tv_context1.setText(djm.getResult().getStat());

}

}

});

}

未完待续~下班~下班~吃饭~减肥~

~

android studio 接口方法,Android Studio第三十期 - 介绍几种网络请求方式写法相关推荐

  1. android 请求方式有哪些,Android中的几种网络请求方式详解

    Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面整理四种常用网络请求方式. java.net包中的HttpURLConnection类 Get方式: // Get方式请求 ...

  2. android 7种网络连接方式--IT蓝豹

    2019独角兽企业重金招聘Python工程师标准>>> 本项目由作者 王永飞 精心为初学者准备的学习项目. android 几种网络连接方式,本项目适合初学者学习网络知识. 项目中用 ...

  3. Android的三种网络联接方式(URL / HttpURLConnection | HttpClient | InetAddress )

    Android SDK 中一些与网络有关的package,如下: 包描述 java.net 提供与联网有关的类,包括流和数据包(datagram)sockets.Internet 协议和常见 HTTP ...

  4. Android系统从驱动到上层服务再到应用的两种服务架构方式

    Android系统从驱动到上层服务再到应用的两种服务架构方式 1)使用类似sensor service的方式: 此方式用于,service的接口不想暴露给上层activity直接使用的情形 例如sen ...

  5. 电信设置的nat 虚拟服务器192.168.1.3 是什么,VMware WorkStation的三种网络连接方式详解...

    一. 首先贴出本人在网络上找到与VMware网络连接相关的知识 安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host ...

  6. VMware运行Ubuntu 三种网络连接方式:bridge、NAT、Host-Only的区别

    https://www.cnblogs.com/janealer/p/5222489.html 我的Host是Windows7,安装VMware虚拟机,在虚拟机中装了Ubuntu10.04,首先介绍下 ...

  7. virtualbox四种网络连接方式及其设置方法

    VirtualBox中有4种网络连接方式: ①NAT ②Bridged Adapter ③Internal ④Host-only Adapte 废话不多说,直接上图! (注:此图直接取至Finalbu ...

  8. 网络资产管理系统_固定资产管理系统的三种网络架构方式

    随着互联网技术的发展和信息技术的广泛使用,固定资产管理系统在各行业的应用越来越普及,固定资产管理系统作为当今主流的企业固定资产信息化管理模式,能够对企业固定资产进行有效管理并提升企业的管理水平.对于固 ...

  9. 虚拟机linux和主机网络连接,linux虚拟机中和主机三种网络连接方式的区别

    linux虚拟机中和主机三种网络连接方式的区别 在介绍网络模式之前,关于网络的几个简单命令的使用 ifup eth0 //启动网卡eth0 ifdown eth0 //关闭网卡eth0 /etc/ne ...

最新文章

  1. 解密为什么八成IT人士愿意跳槽?
  2. codefirst数据库迁移
  3. java中的foreach语句
  4. Http Handler 介绍(转)
  5. ajax实现向上正在加载,向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)
  6. 笔记本电脑桌面的计算机不见了,小编为你分析win7系统笔记本电脑桌面计算机图标不见了的设置方案....
  7. IntelliJ IDEA 快捷键 Windows
  8. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入...
  9. 吉吉影音播放器v2.7.2.4官方版
  10. 前端学习从入门到高级全程记录之43 (PHP基础Ⅵ)
  11. vue js 前端实现PDF文件下载的三种方式 解决vue下载pdf文件打开文件后空白
  12. ODM操作MongoDB
  13. 石油远程《机械设计》第一次在线作业
  14. Java基于springboot+vue+elementUI高速公路收费管理系统设计与实现
  15. Java设计模式----创建者模式
  16. 共享三年嵌入式项目资料(源码+实物图+原创)(申精帖)
  17. MATLAB中关于patch的用法(涉及vertice,faces等的基础的介绍)
  18. 第10届上海尚品家居展实力来袭,优质生产型企业加持核心优势
  19. 卷积神经网络超详细介绍(转载)
  20. linux版本的RAR压缩软件

热门文章

  1. mac系统如何更改用户名及头像
  2. java根据值获取枚举_java – 我可以根据其字段的值获取枚举吗?
  3. table表格详细介绍
  4. 流体机械及工程计算机应用,流体机械及工程
  5. HTML文本界面英文无法自动换行的解决办法
  6. 带你详细入门华为云会议
  7. 云计算,大数据,AI三者的关系如何?
  8. 看板:促进协作和提高生产力的有效方法
  9. 浙江豪微科技在纽约纳斯达克上市了,那么纳斯达克对应我们国内的哪个指数?
  10. 四个步骤教会你休眠文件怎么删除?