【经验随笔】Java通过代理访问互联网平台提供的WebService接口的一种方法
背景
通常有两点原因需要通过代理访问互联网平台的提供的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接口的一种方法的更多相关文章
- java中把文件拷贝到指定目录下最简单几种方法
java中把文件拷贝到指定目录下最简单几种方法 String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...
- Putty 两步代理访问互联网
工作在机房,有时需要访问外网. 此时浏览器需要使用代理服务器,访问的流程如下: 由于SERVER2不能直接访问互联网,而SERVER3可以(机房无法直接访问SERVER3)所以需要两步代理. 配置流程 ...
- C++客户端访问Java服务端发布的SOAP模式的WebService接口
gSOAP是一个绑定SOAP/XML到C/C++语言的工具,使用它可以 简单快速地开发出SOAP/XML的服务器端和客户端 Step1 使用gsoap-2.8\gsoap\bin\win32\wsdl ...
- java调用CXF WebService接口的两种方式
通过http://localhost:7002/card/services/HelloWorld?wsdl访问到xml如下,说明接口写对了. 2.静态调用 // 创建WebService客户端代理工厂 ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序
package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.Ru ...
- Android(java)学习笔记106:Android设置文本颜色的4种方法
1. Android设置文本颜色的4种方法: (1)利用系统自带的颜色类: tv.setTextColor(android.graphics.Color.RED); (2)数字颜色表示: tv.set ...
- 工作随笔——Java网络代理(http,socks)
简单说一下Java如何便捷的使用网络代理功能 此方法使用于大部分情况,一些特殊框架(如:mina)无效. // 代码设置http代理 System.setProperty("proxySet ...
- 使用***客户端和Privoxy让所有CentOS 7命令行工具通过代理访问互联网(转载)
安装*** 首先安装pip: curl -LO "https://bootstrap.pypa.io/get-pip.py" python get-pip.py 通过pip安装** ...
随机推荐
- 织梦去除版权中的Power by DedeCms
找到文件 \include\dedesql.class.php 注释或删除下面代码,大概在588行 $arrs1 = array(0x63,0x66,0x67,0x5f,0x70,0x6f,0x77, ...
- HTML/CSS 知识点
整个前端开发的工作流程 产品经理提出项目需求 UI出设计稿 前端人员负责开发静态页面(跟前端同步的后台人员在准备数据) 前后台的交互 测试 产品上线(后期项目维护) 互联网原理 当用户在浏览器输入网址 ...
- 去掉chrome浏览器中input获得焦点时的带颜色边框呢
可以设置表单控件的outline属性为none值, 来去掉Chrome浏览器中输入框以及其它表单控件获得焦点时的带颜色边框. css代码如下: input{outline:none}
- centos/linux下的安装Tomcat
1.启动tomcat时候需要JDK依赖 如果没有安装的请移步到该链接Centos/linux下的JDK安装 2.从官网上下载tomcat压缩包 wget -c http://apache.fayea. ...
- Egret学习笔记 (Egret打飞机-8.敌机和主角飞机发射子弹)
经过前面几章的准备,我们差不多已经具备了一个基本的框架,这一章我们就开始添砖加瓦了. 敌机定时发射一个子弹,子弹的方向是从上到下,但是发射子弹的代码应该放在哪儿呢? 从面向对象编程的思想来说,子弹是敌 ...
- CodeForces - 551C 二分+贪心
题意:有n个箱子形成的堆,现在有m个学生,每个学生每一秒可以有两种操作: 1: 向右移动一格 2: 移除当前位置的一个箱子 求移除所有箱子需要的最短时间.注意:所有学生可以同时行动. 思路:二分时间, ...
- PCI和PCIE插槽有什么区别?
PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽.PCI插槽也是主板带有最 ...
- tomcat证书配置
第一步:为服务器生成证书 1.进入%JAVA_HOME%/bin目录 2.使用keytool为Tomcat生成证书,假定目标机器的域名是"localhost",keystore文件 ...
- PHP学习笔记--Php预定义超全局变量$_GET
Php中的许多预定义变量都是超全局的,无需使用global声明 超全局变量 不需要声明就可以直接使用 提供超全局变量(数组)为了让程序员更快捷的编程 $GLOBALS— 引用全局作用域中可用的全部变量 ...
- Java获取当前的时间
Java获取当前的时间 1.利用Java中的Calendar获取当前的时间 具体实现如下: /** * @Title:NowTime.java * @Package:com.you.model * @ ...