使用OkHttp请求WebService

作者: 无心下棋 | 来源:发表于2017-03-21 21:32 被阅读1394次

    使用OkHttp请求WebService,比想象中的简单。
    下面以一个天气预报的开放测试接口为例,完成一个接口请求。
    天气预报Web服务,数据来源于中国气象局:
    Endpoint: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx
    Disco: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?disco
    WSDL: http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl
    更多可供测试接口,点击这里

    点开Endpoint这个网址。
    找到Http Get,如图:


    http get


    看到这里,就一目了然了。直接在浏览器中访问就可以了。多么可怕。


    get请求
    那么接下来,就更简单了。

    先添加个OkHttp请求库。

    compile 'xyz.reginer.http:httplib:1.0.4'
    

    然后代码中请求:

    /**
         * 获取天气.
         *
         * @param city         城市
         * @param weatherInter 回调
         */
        public static void getWeather(String city, final WeatherInter weatherInter) {
            Map<String, String> params = new HashMap<>();
            params.put("theCityName", city);
            RHttp.get().url(Urls.GET_WEATHER).params(params).build().execute(new StringCallback() {
                @Override
                public void onError(Call call, Exception e, int id) {
                    weatherInter.getWeather(Log.getStackTraceString(e));
                }
    
                @Override
                public void onResponse(String response, int id) {
                    weatherInter.getWeather(response);
                }
            });
        }
    

    Activity中展示数据:

    @Override
        public void getWeather(String result) {
            Logcat.d("response is::\n" + result);
            if (Build.VERSION.SDK_INT >= 24) {
                // FROM_HTML_MODE_COMPACT:html块元素之间使用一个换行符分隔
                // FROM_HTML_MODE_LEGACY:html块元素之间使用两个换行符分隔
                mTvResult.setText(Html.fromHtml(result, Html.FROM_HTML_MODE_COMPACT));
            } else {
                mTvResult.setText(Html.fromHtml(result).toString().replace(" ","\n"));
            }
        }
    

    好了,结局就是这样,一切都是有条不紊。示例代码点这里

    相关文章

      网友评论

      • fozei:提供的测试网址真棒!
      • Cloverss:恕在下愚钝,这不还是http请求吗?
        无心下棋: @Cloversss WebService可以直接http请求。

      本文标题:使用OkHttp请求WebService

      本文链接:https://www.haomeiwen.com/subject/hmvinttx.html