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

本文介绍如何在企业内网环境下通过代理服务器访问外部WebService接口,并提供Java示例代码调用高德地图坐标转换API。

背景

通常有两点原因需要通过代理访问互联网平台的提供的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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值