使用OkHttp请求WebService

来源:互联网 发布:ipad自带录屏软件 编辑:程序博客网 时间:2024/05/30 12:03

使用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"));        }    }

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

0 0
原创粉丝点击