使用OkHttp请求WebService

    xiaoxiao2021-03-25  36

    使用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,如图: 。 看到这里,就一目了然了。直接在浏览器中访问就可以了。多么可怕。 那么接下来,就更简单了。

    先添加个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")); } }

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

    转载请注明原文地址: https://ju.6miu.com/read-108593.html

    最新回复(0)