既然这篇文章用的是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访问远程服务器的服务相关推荐

  1. java访问服务器中的文件,java 访问远程服务器文件

    java 访问远程服务器文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  2. Java实现远程服务器监控,【Java】监控远程服务器JVM

    今天在用JMeter进行测试的时候,发现线程并发量到50的时候会导致阻塞情况,于是需要监控远程JVM,那么如何监控远程JVM呢? 首先,找到启动计量引擎的sh文件,例如我目前的计量引擎启停文件为str ...

  3. arm服务器获取文件路径中文,ssh 访问远程服务器文件路径

    ssh 访问远程服务器文件路径 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件" ...

  4. ssh查看服务器上的文件,ssh 访问远程服务器文件路径

    ssh 访问远程服务器文件路径 内容精选 换一换 在IntelliJ上选择"项目",找到".idea"文件夹,单击右键选择"新建>文件" ...

  5. java 跨服务器 文件拷贝,java拷贝远程服务器上文件

    java拷贝远程服务器上文件 内容精选 换一换 已成功登录Java性能分析.待安装Guardian的服务器已开启sshd.待安装Guardian的服务器已安装JRE,JRE版本要求为Huawei JD ...

  6. 怎样访问远程服务器文件夹,访问远程服务器的共享文件夹

    访问远程服务器的共享文件夹 内容精选 换一换 FOTA升级作用:在官方更新新固件后,模组设备无需寄回给官方,而是通过远程FTP/HTTP进行OTA升级固件,以更新新固件版本,从而达到更新设备的功能/B ...

  7. 怎样访问远程服务器文件夹,访问远程服务器文件夹

    访问远程服务器文件夹 内容精选 换一换 /home/ubuntu为用户文件夹.此后,可以通过Windows的远程桌面访问到该华为鲲鹏920处理器所在服务器图形桌面,使用root帐号登录. 为加强对系统 ...

  8. java读远程服务器文件,java 读取远程服务器文件

    java 读取远程服务器文件 [2021-01-31 12:09:45]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace(" ...

  9. 远程服务器的url怎么配置文件,Linux常用命令(5)--SSH访问远程服务器、SCP服务器间文件拷贝...

    一.使用"ssh"命令,登录访问远程服务器 Linux是一个支持多用户操作的系统,在同一时刻允许多个用户同时访问系统,共享系统提供的服务.那么用户如何从不同的机器上访问同一台Lin ...

最新文章

  1. 玛塔机器人函数_玛塔创想编程机器人套装包含什么?
  2. 交换机配置——VTP管理交换机的VLAN配置
  3. bat截取字符串[转]
  4. github-本地仓库文件同步到云服务器上的演练
  5. G1垃圾收集器之对象分配过程
  6. Osql\sqlcmd工具管理 SQL Server
  7. form提交xml文件
  8. ubuntu 22.04安装微信QQ阿里旺旺等
  9. 图片批量合成PDF方法
  10. 眨眼网杨莹,能写代码能玩时尚的美女CEO-搜狐
  11. <C语言程序实例>C语言实现菱形输出
  12. dell主板40针开机针脚_主板开机针脚 ,该怎么插啊 分别有POWER SW, H.D.D LED, RESET SW, P...
  13. Proxmox VE 7.2 更改登录横幅
  14. Python第三课:列表,元组,集合
  15. ADI实验室电路:带抗混叠滤波器的宽带接收机
  16. python 小说 小说_如何使用python上小说网爬网络小说?
  17. 什么是GPRS,CMWAP,CMNET-移动网络介绍
  18. 『VQA认知』如何理解Bias?
  19. 计算机应用程序池在哪,win10系统iis修改站点的应用程序池权限的详细方案
  20. 00后大学生:无穷小微积分教材何在?

热门文章

  1. 对 java 同步锁 以及 级别升级的 理解
  2. 机器学习笔记(part1)--Frobenius范数与迹运算
  3. 《终身成长》读书笔记(part4)--创造性并不是出自灵感的神奇行为,而是努力工作和倾情奉献的结果
  4. 为什么肯德基旁边总有一家麦当劳
  5. SAP Fiori 的 UI 新主题 Horizon
  6. 使用 Chrome 开发者工具的 lighthouse 功能分析 web 应用的性能问题
  7. 什么是 SAP vocabulary-based annotations
  8. SAP Spartacus 里 ng-template和ng-container的嵌套使用
  9. Angular [(ngModel)]的ng-dirty设置时机
  10. taskdef class org.apache.catalina.ant.InstallTask cannot be found