Java-通过URL来调用WebAPI


title: Java 通过URL来调用WebAPI
date: 2019-05-13 07:27:14
tags:

API

什么是API

API(Application programming interface)是一些预先定义的函数,无需理解内容细节,只需要根据协议调用即可。

个人理解

本文主要想描述的WebApi是指一些通过Http协议调用的第三方提供的服务,这种Api在给出的时候一般都是一种URL的形式,调用时直接用过Http协议,对URL上加上自己想要加的参数之后接收返回值即可。

URL

参考 邻家大表哥的CSDN博客

URL的各个组成部分

一个完整的URL
http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#r_70732423
其中应包括:

协议部分

如本例中的http:,这代表了这个URL的http协议的,常见的还有https和ftp,后面的//是分隔符

域名部分

本例中的"www.aspxfans.com",一个IP也可以当做域名使用,由自己的IP映射到域名是需要自己购买域名的。

端口号

域名后面的 “:8080” 是端口号,如果没有给出端口号说明是默认的http端口号,为80,大型网站一般都没有端口号。

虚拟目录部分

8080: 后面的 /news/ 是虚拟目录部分,表示文件在服务器上的位置,虚拟目录并不是必要的。

文件名

对应本例中的index.asp,表示浏览的具体是哪个文件,文件名部分是可以省略的,省略之后则会使用默认的文件,一般是index.*。

参数部分

从文件名后的"?"开始对应的就是URL的参数部分,URL的参数是键值对的形式,即Key=value,中间用&分开多个参数。

锚部分

最后的#r_70732423,不是一个URL必须的部分,通常表示在一个界面的浏览位置。

Java实例

百度地图给出的经纬度转实际地址API

服务文档

在调用一个第三方平台的Api时,一定要仔细浏览他所给出的服务文档,这是我们接触Api调用方式最基本的途径。
Java-通过URL来调用WebAPI_第1张图片
在文档里面我们可以看到WebApi对应的Http链接和参数说明,下面直接利用Java的URL类调用。

public void transform(final String[] positions){
//        final String[] position ={"39.26","116.2317"};
        new Thread(){
            @Override
            public void run(){
                try{
                    ObjectBox oBox = ObjectBox.getInstance();
                    Handler mHandler = oBox.getmHandler();
                    String uri = "http://api.map.baidu.com/geocoder/v2/?callback=renderReverse&location="+positions[0]+","+positions[1]+"output=json&pois=1&latest_admin=1&ak="+AK;
                    URL url = new URL(uri);
                    byte[] recBuf = new byte[1024];
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    if (urlConnection.getResponseCode() == 200){
                        InputStream is = urlConnection.getInputStream();
                        int length = is.read(recBuf);
                        String res = new String(recBuf,0,length);
                    } else Log.w("Transform", "status code"+urlConnection.getResponseCode());
                }catch (Exception E){E.printStackTrace();}
            }
        }.start();
    }

利用String的字符串拼接,将自己的参数加到Url中,之后利用java的Url类和HttpURLConnection类创建链接,之后获取利用urlConnetcion的getInputStream方法进行读取便可得到调用结果,返回结果可能是Xml也可能是Json,根据返回类型进行处理即可得到自己的数据。

你可能感兴趣的:(Java)