欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java-通过URL来调用WebAPI

程序员文章站 2024-03-23 08:23:55
...

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
在文档里面我们可以看到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,根据返回类型进行处理即可得到自己的数据。