zoukankan      html  css  js  c++  java
  • web service调用第三方接口

    1. 什么是Web Service呢?从表面上看,WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web调用来实现某个功能的应用程序。从深层次上看,Web Service是一种新的Web应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络(通常为Web)中被描述、发布、查找以及通过Web来调用。

    2.Web Service便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议HTTP和XML,将功能体现在互联网和企业内部网上。WebService平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用你喜欢的任何语言,在你喜欢的任何平台上写Web Service。

    3.WebService 为Internet 上的组件服务•通过网络提供,以URL 定位方法调用•以Internet技术为基础•未來的分散式应用程序

    见代码--------↓↓↓↓↓↓↓↓↓

    /**
     * 调用对方接口方法
     * @param path 对方或第三方提供的路径
     * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析
     */
    public static void interfaceUtil(String path,String data) {
        try {
            URL url = new URL(path);
            //打开和url之间的连接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            //设置请求方式
            conn.setRequestMethod("post");
            //设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,发送post请求必须设置
            /**
             *  get请求用不到conn.getOutputStream(),因为参数直接追加在地址后面,因此默认是false。  
             *    post请求(比如:文件上传)需要往服务区传输大量的数据,这些数据是放在http的body里面的,因此需要在建立连接以后,往服务端写数据。
             *    URL 连接可用于输入和/或输出。如果打算使用 URL连接进行输入,则将 DoInput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 true。   
             *    URL 连接可用于输入和/或输出。如果打算使用 URL连接进行输出,则将 DoOutput 标志设置为 true;如果不打算使用,则设置为 false。默认值为 false。 
             */
            conn.setDoOutput(true);    //以后就可以使用conn.getOutputStream().write()  
            conn.setDoInput(true);    //以后就可以使用conn.getInputStream().read()
            //获取URLConnection对象对应的输出流
            PrintWriter printWriter = null;
            printWriter = new PrintWriter(conn.getOutputStream());
            //发送请求参数即data
            printWriter.print(data);
            //缓冲数据
            printWriter.flush();
            //关闭资源
            printWriter.close();
            //获取URLConnection对象对应的输入流
            InputStream is = conn.getInputStream();    //因为总是使用conn.getInputStream()获取服务端的响应,因此默认值是true。  
            //构造一个字符流缓存
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = "";
            while ((str = br.readLine()) != null) {
                System.out.println(str);
            }
            //关闭输入流
            is.close();
            //断开连接,最好写上,disconnect是在底层tcp socket链接空闲时才切断。如果正在被其他线程使用就不切断。
            //固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
            conn.disconnect();
            System.out.println("-----------over------------");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
    * 测试
    * 接口是阿里的所在地(市级)经纬度查询
    */
    public static void main(String[] args) throws Exception{
        //对%C4%CF%BE%A9%CA%D0进行GBK解码
        String str1=URLDecoder.decode("%C4%CF%BE%A9%CA%D0","GBK");
        System.out.println("str1:"+str1);
        //对南京市进行GBK编码
        String str=URLEncoder.encode("南京市","GBK");
        System.out.println("str:"+str);
        interfaceUtil("http://gc.ditu.aliyun.com/geocoding?a="+str,"");
    }

    2018-11-08

  • 相关阅读:
    UITextField editingDidEnd 不调用(不响应)
    修改 Navigation Bar 返回按钮文字和图片
    HTTPS抓包
    brew 基本使用方法
    Linux基本命令
    AR 初探
    汇编学习
    ios GCD ---- (1)
    axios导出或者下载
    Vue绑定图片src出现的问题
  • 原文地址:https://www.cnblogs.com/licheng0201/p/9930587.html
Copyright © 2011-2022 走看看