使用nodejs和Java访问远程服务器的服务
既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧。
这是我用ABAP编程语言实现服务的类:ZCL_DIS_HTTP_HANDLER
这个类实现了一个接口IF_HTTP_EXTENSION里定义的一个方法HANDLE_REQUEST.
大家可以不用被ABAP陌生的语法所迷惑,其实和Java的Servlet是相通的。
我画了张图:
我的这个远程服务很简单,就是无论调用者发送什么,都简单地返回一个文本:HELLO WORLD。
现在我们就分别用nodejs和Java去消费。
nodejs
看下nodejs代码。
下面的代码传入Buffer的WANGJER为我的用户名,123456为密码。使用的登录方式是Basic Authentication。
var request = require('request');var getTokenOptions = {url: "https://<此处填入您的远程服务器上的服务地址url",method: "GET",headers: {'Authorization': 'Basic ' + new Buffer("WANGJER:123456").toString('base64')}};function getToken() {return new Promise(function(resolve,reject){var requestC = request.defaults({jar: true});console.time("Remote");requestC(getTokenOptions,function(error,response,body){console.log("response body: " + body);console.timeEnd("Remote");resolve(response);});});}getToken().then(function(response) {});
执行结果:算上网络开销总共花了1.4秒。
java
下面代码的WANGJER为我的用户名,123456为密码。使用的登录方式是Basic Authentication。
package connectivity;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.apache.commons.codec.binary.Base64;import java.util.stream.Collectors;import org.apache.http.HttpResponse;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.HttpClientBuilder;public class OPSystemConnectivity{static public void main(String[] arg){final HttpGet get = new HttpGet("https://<您远程服务器的url");HttpClient httpClient = HttpClientBuilder.create().build();String raw = "WANGJER:123456";String encoded = Base64.encodeBase64String(raw.getBytes());get.setHeader("Authorization", "Basic " + encoded);HttpResponse response;try {long start = System.currentTimeMillis();response = httpClient.execute(get);InputStream stream = response.getEntity().getContent();String result = new BufferedReader(new InputStreamReader(stream)).lines().parallel().collect(Collectors.joining(" "));System.out.println("response: " + result);stream.close();long end = System.currentTimeMillis() - start;System.out.println("time consumed: " + end );} catch (ClientProtocolException e) {e.printStackTrace();} catch (IOException | UnsupportedOperationException e) {e.printStackTrace();}}}
执行结果,耗时和nodejs差不多。
注意,用本文介绍的方法不仅能访问远程服务器的服务,也能达到资源下载的目标:比如下载某服务器上的图片,mp3等。只需要把对应资源的url传入系统即可。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
使用nodejs和Java访问远程服务器的服务相关推荐
- java访问服务器中的文件,java 访问远程服务器文件
java 访问远程服务器文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...
- Java实现远程服务器监控,【Java】监控远程服务器JVM
今天在用JMeter进行测试的时候,发现线程并发量到50的时候会导致阻塞情况,于是需要监控远程JVM,那么如何监控远程JVM呢? 首先,找到启动计量引擎的sh文件,例如我目前的计量引擎启停文件为str ...
- arm服务器获取文件路径中文,ssh 访问远程服务器文件路径
ssh 访问远程服务器文件路径 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件" ...
- ssh查看服务器上的文件,ssh 访问远程服务器文件路径
ssh 访问远程服务器文件路径 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件" ...
- java 跨服务器 文件拷贝,java拷贝远程服务器上文件
java拷贝远程服务器上文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...
- 怎样访问远程服务器文件夹,访问远程服务器的共享文件夹
访问远程服务器的共享文件夹 内容精选 换一换 FOTA升级作用:在官方更新新固件后,模组设备无需寄回给官方,而是通过远程FTP/HTTP进行OTA升级固件,以更新新固件版本,从而达到更新设备的功能/B ...
- 怎样访问远程服务器文件夹,访问远程服务器文件夹
访问远程服务器文件夹 内容精选 换一换 /home/ubuntu为用户文件夹.此后,可以通过Windows的远程桌面访问到该华为鲲鹏920处理器所在服务器图形桌面,使用root帐号登录. 为加强对系统 ...
- java读远程服务器文件,java 读取远程服务器文件
java 读取远程服务器文件 [2021-01-31 12:09:45] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...
- 远程服务器的url怎么配置文件,Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝...
一.使用"ssh"命令,登录访问远程服务器 Linux是一个支持多用户操作的系统,在同一时刻允许多个用户同时访问系统,共享系统提供的服务.那么用户如何从不同的机器上访问同一台Lin ...
最新文章
- 玛塔机器人函数_玛塔创想编程机器人套装包含什么?
- 交换机配置——VTP管理交换机的VLAN配置
- bat截取字符串[转]
- github-本地仓库文件同步到云服务器上的演练
- G1垃圾收集器之对象分配过程
- Osql\sqlcmd工具管理 SQL Server
- form提交xml文件
- ubuntu 22.04安装微信QQ阿里旺旺等
- 图片批量合成PDF方法
- 眨眼网杨莹,能写代码能玩时尚的美女CEO-搜狐
- <C语言程序实例>C语言实现菱形输出
- dell主板40针开机针脚_主板开机针脚 ,该怎么插啊 分别有POWER SW, H.D.D LED, RESET SW, P...
- Proxmox VE 7.2 更改登录横幅
- Python第三课:列表,元组,集合
- ADI实验室电路:带抗混叠滤波器的宽带接收机
- python 小说 小说_如何使用python上小说网爬网络小说?
- 什么是GPRS,CMWAP,CMNET-移动网络介绍
- 『VQA认知』如何理解Bias?
- 计算机应用程序池在哪,win10系统iis修改站点的应用程序池权限的详细方案
- 00后大学生:无穷小微积分教材何在?
热门文章
- 对 java 同步锁 以及 级别升级的 理解
- 机器学习笔记(part1)--Frobenius范数与迹运算
- 《终身成长》读书笔记(part4)--创造性并不是出自灵感的神奇行为,而是努力工作和倾情奉献的结果
- 为什么肯德基旁边总有一家麦当劳
- SAP Fiori 的 UI 新主题 Horizon
- 使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
- 什么是 SAP vocabulary-based annotations
- SAP Spartacus 里 ng-template和ng-container的嵌套使用
- Angular [(ngModel)]的ng-dirty设置时机
- taskdef class org.apache.catalina.ant.InstallTask cannot be found