Android Retrofit请求服务器返回字符串(非JSON)

来源:互联网 发布:淘宝绽放茉莉恶心 编辑:程序博客网 时间:2024/06/05 21:57

    今天,笔者在学习微软语音识别认知服务的开发中遇到了一个问题,那就是微软 cognitive token (获取token的api: https://api.cognitive.microsoft.com/sts/v1.0/issueToken)时返回的是字符串,而不是json格式,笔者的开发环境是android studio 2.3.3, 使用Retrofit来作为网络请求库。

    之后,笔者查阅了网上的有关教程,无外乎都是请求json数据,使用addConverterFactory(GsonConverterFactory.create())来作为转化器,如果业务需求是请求字符串,而不是json数据格式呢,继续使用这个转换器就会产生错误。

    那么,如何使用Retrofit请求服务器返回一段字符串呢?

    首先,来到官方文档查阅:http://square.github.io/retrofit/   找到如下:

这里写图片描述

可见,官方已经提供了一个字符串的转换器,那么接下来把它导入项目使用就可以了,步骤如下:


①添加gradle依赖:

compile 'com.squareup.retrofit2:retrofit:2.1.0'compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'compile 'com.squareup.retrofit2:converter-scalars:2.0.0'    //导入scalars包

②创建用于描述网络请求的接口:

public interface POSTToken_Interface {    @POST("sts/v1.0/issueToken")    Call<String> getCall(            @Query("Subscription-Key") String subscriptKey    );   }

③开始请求:

实现功能:获取微软cognitive token

实现方案:采用Post方法对 https://api.cognitive.microsoft.com/sts/v1.0/issueToken 发送网络请求

api的数据格式:

请求参数:

Subscription-Key: 在Azure上订阅某接口的订阅号

返回格式:

String: 字符串

具体实现如下:public class POSTToken extends AppCompatActivity {    @Override    public void onCreate(Bundle saveInstanceState){        super.onCreate(saveInstanceState);        setContentView(R.layout.activity_main);        System.out.println("start");        request();    }    public void request(){        //创建Retrofit对象        Retrofit retrofit=new Retrofit.Builder()                .baseUrl("https://api.cognitive.microsoft.com/")                .addConverterFactory(ScalarsConverterFactory.create())                 //设置ScalarsConverter                .build();        // 创建 网络请求接口 的实例        POSTToken_Interface request=retrofit.create(POSTToken_Interface.class);        //对 发送请求 进行封装        Call<String> call=request.getCall("c8f279f104024625bfaa155f33d8d1b5");  //此key将过期        //发送网络请求(异步)        call.enqueue(                new Callback<String>() {                    //请求成功时回调                    @Override                    public void onResponse(Call<String> call, Response<String> response) {                        System.out.println(response.body());                    }                    //请求失败时回调                    @Override                    public void onFailure(Call<String> call, Throwable t) {                        System.out.println("连接失败");                      //  t.printStackTrace();                    }                }        );    }}————————————————————————————————————————————————————————————————————————————————————————————看看运行结果:可以看到成功获得了字符串大笑

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新申请的qq号忘了怎么办 刚申请的qq号忘了怎么办 以前申请的qq号忘了怎么办 小孩玩手机游戏扣费了怎么办 手机qq好友头像显示不出来怎么办 qq的一些重要数据被清理怎么办 华为p9微信听筒声音小怎么办 win10我的电脑图标没了怎么办 小米5x里的微信头像不清楚怎么办 微信头像换了总是模糊怎么办 找到老公暧昧对象的微信怎么办 朋友欠我钱一直拖找借口怎么办 陌陌附近的人不按距离排序怎么办 老婆一直要管我的钱怎么办 老公不肯把钱交给老婆管怎么办 愿意和做朋友不愿意做情侣怎么办 欠信用卡碰到第三方不愿协调怎么办 qq密码忘记了申诉不回来怎么办 当你老公烦你了你该怎么办 自己有漂亮媳妇还经常想去嫖怎么办 微信号封了找不到好友解封怎么办 别人总是提起你的黑历史怎么办 换了手机微信登录不上怎么办 qq不小心清空了聊天记录怎么办 人家介绍了外地媳妇跑了怎么办 火锅想吃香菜牛肉没有签子串怎么办 想读外省大学但家人反对怎么办 13岁被同学忽视他不知道怎么办 老婆发现老公在微信暧昧聊天怎么办 老婆微信和别人聊天暧昧我该怎么办 淘宝修改标题宝贝被删了怎么办 百度网盘上的相片变的模糊怎么办 微信2不小心删了怎么办 房屋没交接前给钥匙出现问题怎么办 微信银行卡注销零钱没了怎么办 贴小广告电话被城管上报停机怎么办 没有id密码怎么办已经锁死了屏幕 电信电话卡注销了里面的钱怎么办 支付宝绑定的手机号成空号了怎么办 支付宝绑定的手机号空号了怎么办 支付宝绑定的手机号码空号了怎么办