背景

通常有两点原因需要通过代理访问互联网平台的提供的WebService接口:

1. 在公司企业内网访问外部互联网平台发布的接口,公司要求通过代理访问外网。

2. 频繁访问平台接口,IP被平台封了,需要寻求一个代理访问。

下面以调用高德提供的坐标转换接口为例说明 如何设置代理

高德提供了一个接口的URL 是:http://restapi.amap.com/v3/assistant/coordinate

locations=116.481499,39.990475&coordsys=gps&output=xml&key=<用户的key>

接口详细说明见:http://lbs.amap.com/api/webservice/guide/api/convert/#convert

为了方便JAVA代码调用,可以对接口PATH和参数做一些封装。

封装公共函数

package com.huawei.internetcrawler.util;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

import javax.ws.rs.core.MediaType;
import org.apache.cxf.jaxrs.client.WebClient;

public class WebServiceUtil
{
    /**
     * 设置外网访问proxy
     */
    static
    {
        System.setProperty("http.proxyHost", "代理IP或者域名");
        System.setProperty("http.proxyPort", "代理端口号");
    }

    /*******************************************************************************************************************
     * Title: invokeWS
     * Description: 调用WebService服务。用于调用互联网开发平台提供的查询接口。
     *
     * @param url webservice服务接口url。
     *
     * @return 返回查询结果的json串     ******************************************************************************************************************/
    public static String invokeWS(String url, Map<String, String> queryParaMap)
    {
        WebClient client = WebClient.create(url);

        for (Entry<String, String> entry : queryParaMap.entrySet())
        {
            client.query(entry.getKey(), entry.getValue());
        }

        String result =client.accept(MediaType.APPLICATION_JSON).get(String.class);
        return result;
    }
}

客户端调用代码样例

    public static void main(String[] args)
    {
        Map<String, String> queryParaMap = new HashMap<String, String>();
        queryParaMap.put("key", "b21166784a64fe201084e6f057f384ab");
        queryParaMap.put("locations", "113.941084,22.546002");
        queryParaMap.put("coordsys", "baidu");
        invokeWS("http://restapi.amap.com/v3/assistant/coordinate/convert", queryParaMap);
    }

【经验随笔】Java通过代理访问互联网平台提供的WebService接口的一种方法的更多相关文章

  1. java中把文件拷贝到指定目录下最简单几种方法

    java中把文件拷贝到指定目录下最简单几种方法   String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...

  2. Putty 两步代理访问互联网

    工作在机房,有时需要访问外网. 此时浏览器需要使用代理服务器,访问的流程如下: 由于SERVER2不能直接访问互联网,而SERVER3可以(机房无法直接访问SERVER3)所以需要两步代理. 配置流程 ...

  3. C++客户端访问Java服务端发布的SOAP模式的WebService接口

    gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以 简单快速地开发出SOAP/XML的服务器端和客户端 Step1 使用gsoap-2.8\gsoap\bin\win32\wsdl ...

  4. java调用CXF WebService接口的两种方式

    通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...

  5. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  6. Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序

    package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...

  7. Android(java)学习笔记106:Android设置文本颜色的4种方法

    1. Android设置文本颜色的4种方法: (1)利用系统自带的颜色类: tv.setTextColor(android.graphics.Color.RED); (2)数字颜色表示: tv.set ...

  8. 工作随笔——Java网络代理(http,socks)

    简单说一下Java如何便捷的使用网络代理功能 此方法使用于大部分情况,一些特殊框架(如:mina)无效. // 代码设置http代理 System.setProperty("proxySet ...

  9. 使用***客户端和Privoxy让所有CentOS 7命令行工具通过代理访问互联网(转载)

    安装*** 首先安装pip: curl -LO "https://bootstrap.pypa.io/get-pip.py" python get-pip.py 通过pip安装** ...

随机推荐

  1. ubuntu:通过封装验证码类库一步步安装php的gd扩展

    我相信很多人的lamp环境都是直接复制一堆参数安装进去的,这里有可能成功,也有可能失败,如果是新手,估计要碰到各种错误,就算安装成功,也未必知道那些参数是干嘛的,反正装进去能用就行. 我当初开始的时候 ...

  2. C/C++语言的特点

    一.支持数据封装和数据隐藏 在C++中,类是支持数据封装的工具,对象则是数据封装的实现.C++通过建立用户定义类支持数据封装和数据隐藏. 在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装 ...

  3. redux middleware 源码分析

    原文链接 middleware 的由来 在业务中需要打印每一个 action 信息来调试,又或者希望 dispatch 或 reducer 拥有异步请求的功能.面对这些场景时,一个个修改 dispat ...

  4. SpringBoot 中常用注解

    本篇博文将介绍几种SpringBoot 中常用注解 其中,各注解的作用为: @PathVaribale 获取url中的数据 @RequestParam 获取请求参数的值 @GetMapping 组合注 ...

  5. Mysql引擎中MyISAM和InnoDB的区别有哪些?

    简单的概括一下 InnoDB:支持事务处理等不加锁读取支持外键支持行锁不支持FULLTEXT类型的索引不保存表的具体行数,扫描表来计算有多少行DELETE 表时,是一行一行的删除InnoDB 把数据和 ...

  6. Visual Studio 环境路径答疑!

    工程目录结构如下: Console │ Console.sln │ Console.VC.db │ ├─Console │ │ Console.cpp │ │ Console.vcxproj │ │ ...

  7. UESTC - 1057 秋实大哥与花 线段树

    题意 秋实大哥是一个儒雅之人,昼听笙歌夜醉眠,若非月下即花前. 所以秋实大哥精心照料了很多花朵.现在所有的花朵排成了一行,每朵花有一个愉悦值. 秋实大哥每天要对着某一段连续的花朵歌唱,然后这些花朵的愉 ...

  8. SpringMVC实现返回不同视图

    在spring mvc中应该怎么实现可以返回不同结果呢,其实就是配置多个视图解析器,最常用的就是freemaker视图解析器,有时候要又要同时又jsp,html,那么应该怎么配置呢? 具体配置如下 & ...

  9. scrapy 中日志的使用

    我在后台调试 在后台调试scrapy spider的时候,总是觉得后台命令窗口 打印的东西太多了不便于观察日志,因此需要一个日志文件记录信息,这样以后会 方便查找问题. 分两种方法吧. 1.简单粗暴. ...

  10. Spring 中@NotNull, @NotEmpty和@NotBlank之间的区别是什么?

    简述三者区别 @NotNull://CharSequence, Collection, Map 和 Array 对象不能是 null, 但可以是空集(size = 0). @NotEmpty://Ch ...