前言

近期研究如何利用java代码如何获取其他系统中所需的数据,自己总结的方法如下:

1.工具类代码

 /**
* <pre>
* 方法体说明:向远程接口发起请求,返回字符串类型结果
* @param url 接口地址
* @param requestMethod 请求类型
* @param params 传递参数
* @return String 返回结果
* </pre>
*/
public static String httpRequestToString(String url, String requestMethod,
Map<String, String> params, String ...auth){
//接口返回结果
String requestResult = null;
try {
String parameters = "";
boolean hasParams = false;
//将参数集合拼接成特定格式,如name=zhangsan&age=24
for(String key : params.keySet()){
String value = URLEncoder.encode(params.get(key), "UTF-8");
parameters += key +"="+ value +"&";
hasParams = true;
}
if(hasParams){
parameters = parameters.substring(0, parameters.length()-1);
}
//是否为GET方式请求
boolean isGet = "get".equalsIgnoreCase(requestMethod);
boolean isPost = "post".equalsIgnoreCase(requestMethod);
boolean isPut = "put".equalsIgnoreCase(requestMethod);
boolean isDelete = "delete".equalsIgnoreCase(requestMethod); //创建HttpClient连接对象
DefaultHttpClient client = new DefaultHttpClient();
HttpRequestBase method = null;
if(isGet){
url += "?" + parameters;
method = new HttpGet(url);
}else if(isPost){
method = new HttpPost(url);
HttpPost postMethod = (HttpPost) method;
StringEntity entity = new StringEntity(parameters);
postMethod.setEntity(entity);
}else if(isPut){
method = new HttpPut(url);
HttpPut putMethod = (HttpPut) method;
StringEntity entity = new StringEntity(parameters);
putMethod.setEntity(entity);
}else if(isDelete){
url += "?" + parameters;
method = new HttpDelete(url);
}
method.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000);
//设置参数内容类型
method.addHeader("Content-Type","application/x-www-form-urlencoded");
//httpClient本地上下文
HttpClientContext context = null;
if(!(auth==null || auth.length==0)){
String username = auth[0];
String password = auth[1];
UsernamePasswordCredentials credt = new UsernamePasswordCredentials(username,password);
//凭据提供器
CredentialsProvider provider = new BasicCredentialsProvider();
//凭据的匹配范围
provider.setCredentials(AuthScope.ANY, credt);
context = HttpClientContext.create();
context.setCredentialsProvider(provider);
}
//访问接口,返回状态码
HttpResponse response = client.execute(method, context);
//返回状态码200,则访问接口成功
if(response.getStatusLine().getStatusCode()==200){
requestResult = EntityUtils.toString(response.getEntity());
}
client.close();
}catch (UnsupportedEncodingException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return requestResult;
}

2.测试代码

public static void main(String[] args) {
//url中获取的登录的接口
String url ="https://●●●●●●●●●●●●/login/validate.do";
Map<String, String> params = new HashMap<>();
// 用户名
params.put("username","LZZHXF");
// 密码
params.put("password","●●●●●●●");
// 是否记住密码
params.put("isRemenber","true");
// 根据用户名、密码调用登录接口返回token
String string = httpRequestToString(url, "post", params);
System.out.println(string);
}

返回如下图所示:

java请求登录接口代码示例的更多相关文章

  1. java基础之----java常见异常及代码示例

    概述 java中有两种错误类型,一个是Exception,一个是Error,都在java.lang包下,一般来说程序中的try...catch捕获的是Exception类型的异常,而Error类型的错 ...

  2. PHP 最完美调用百度翻译接口代码示例 (原)

    php调用百度翻译最新接口代码 问       题:写的过程遇到了一个问题,url拼接好的原翻译内容,appid,sign的地址直接输出到浏览器可以打开看到翻译后的返回值,但是各种curl,file_ ...

  3. ajax请求, 前后端, 代码示例

    [博客园cnblogs笔者m-yb原创,转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] http ...

  4. java 请求第三方接口 GET\POST 实现方法

    (1)GET方法 /** * 根据高德地图api获取位置信息 * @return * */ public static String getMapAddInfo(String httpurl) { H ...

  5. Java 实现金额转换 代码示例

    金额转换,阿拉伯数字的金额转换成中国传统的形式如: (¥1011)→(壹仟零壹拾壹元整)输出. 分析: 金额转换,在开发财务相关软件时会经常用到,也是软件本地化的一个需要.一般开发公司或者团队都有相应 ...

  6. Java 请求webServce接口 带参数

    public String getWebServiceByParams(String param){ //获取基金缴付记录 // Post请求的url,与get不同的是不需要带参数 URL postU ...

  7. Java 请求webServce接口 不带参数

    最近对接了个webService的接口取数据,从网上良莠不齐的代码中找到了个方法, 具体作者已经记不住是谁了,现在把代码贴出来,希望可以帮到大家,代码如下,简单粗暴 public String get ...

  8. [置顶] think in java interview-高级开发人员面试宝典代码示例

    下载资源地址为: http://download.csdn.net/detail/lifetragedy/6379755 这是think in java interview中的代码示例,包括JAVA基 ...

  9. Spring boot 配置https 实现java通过https接口访问

    近来公司需要搭建一个https的服务器来调试接口(服务器用的spring boot框架),刚开始接触就是一顿百度,最后发现互联网认可的https安全链接的证书需要去CA认证机构申请,由于是调试阶段就采 ...

随机推荐

  1. Java学习day37

    动态语言:是一类在运行时可以改变其结构的语言:例如新的函数.对象.甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化. 主要动态语言:Objective-C.C#.JavaScript.PH ...

  2. form表单请求

    form 表单的acton属性指向url:端口号/(服务器get,post的参数), meyhod='get'/'post'  请求方式,必须要加上name属性. <form action=&q ...

  3. 反射解决微信开发加解密illegal key size,不需要修改JDK jar包

    在微信开发时,消息接口时,涉及到消息加密,抛出了 java.security.InvalidKeyException: Illegal key size 的异常,异常堆栈如下: 按照网上的解决方案,都 ...

  4. 深入浅出聊Taier—大数据分布式可视化DAG任务调度系统

    导读: 上周,袋鼠云数栈全新技术开源规划--DTMO(DTstack Meetup Online)的第一场直播圆满完成.袋鼠云数栈大数据开发专家.Taier项目主导人偷天为大家带来了<Taier ...

  5. XCTF练习题---MISC---Cephalopod

    XCTF练习题---MISC---Cephalopod flag:HITB{95700d8aefdc1648b90a92f3a8460a2c} 解题步骤: 1.观察题目,下载附件 2.拿到手以后发现是 ...

  6. 干货|SQL语句大全,所有的SQL都在这里了(建议收藏)

    一个执着于技术的公众号 一.基础 1.登录数据库 mysql -uroot -p123123 2.创建数据库 create database <数据库名> 3.删除数据库 drop dat ...

  7. Go 语言快速开发入门

    目录 需求 开发的步骤 linux下如何开发Go程序 MAC下如何开发Go程序 Golang执行流程分析 编译和运行说明 Go程序开发的注意事项 Go语言的转义字符(escapechar) Golan ...

  8. C++进阶-3-5-set/multiset容器

    C++进阶-3-5-set/multiset容器 1 #include<iostream> 2 #include<set> 3 using namespace std; 4 5 ...

  9. linux篇-Linux逻辑卷详解总结

    LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性. LVM将存储 ...

  10. Helloworld 驱动模块加载

    介绍 本文引用<linux设备驱动开发>书中部分解释,记录开篇第一章helloworld程序 以下内容需要掌握如下基础信息linux模块概念.链接编译.c语言基础 内容 helloworl ...