首页 > 其他分享 >远程调用归纳

远程调用归纳

时间:2024-03-13 14:25:58浏览次数:21  
标签:调用 log 归纳 url param catch 远程 String

HttpClient和HttpURLConnection

远程调用我们首先想到微服务的组件OpenFeign,但是在单体项目中我们不可能去集成一个专门的远程调用服务,可以使用常见的Http API或者使用Springboot自带的RestTemplate

【解决方案】如何使用 Http API 代替 OpenFeign 进行远程服务调用 - CodeBlogMan - 博客园 (cnblogs.com)

java使用httpclient 、HttpURLConnection 发送第三方请求 使用详解、总结。HttpClient 的使用_java doget 设置请求头-CSDN博客
这里附上使用URLConnection进行远程调用的工具类方法

    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        StringBuilder result = new StringBuilder();
        try {
            log.info("sendPost - {}", url);
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            out = new PrintWriter(conn.getOutputStream());
            out.print(param);
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
            String line;
            while ((line = in.readLine()) != null) {
                result.append(line);
            }
            log.info("recv - {}", result);
        } catch (ConnectException e) {
            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
        } catch (SocketTimeoutException e) {
            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
        } catch (IOException e) {
            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
        } catch (Exception e) {
            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
        } finally {
            try {
                if (out != null) {
                    out.close();
                }
                if (in != null) {
                    in.close();
                }
            } catch (IOException ex) {
                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
            }
        }
        return result.toString();
    }
    public static String sendGet(String url, String param, String contentType)
    {
        StringBuilder result = new StringBuilder();
        BufferedReader in = null;
        try
        {
            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
            log.info("sendGet - {}", urlNameString);
            URL realUrl = new URL(urlNameString);
            URLConnection connection = realUrl.openConnection();
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            connection.connect();
            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
            String line;
            while ((line = in.readLine()) != null)
            {
                result.append(line);
            }
            log.info("recv - {}", result);
        }
        catch (ConnectException e)
        {
            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
        }
        catch (SocketTimeoutException e)
        {
            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
        }
        catch (IOException e)
        {
            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
        }
        catch (Exception e)
        {
            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
        }
        finally
        {
            try
            {
                if (in != null)
                {
                    in.close();
                }
            }
            catch (Exception ex)
            {
                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
            }
        }
        return result.toString();
    }

标签:调用,log,归纳,url,param,catch,远程,String
From: https://www.cnblogs.com/code-jia/p/18070527

相关文章

  • Windows Server 各版本搭建终端服务器实现远程访问(03~19)
    一、WindowsServer2003左下角开始➡管理工具➡管理您的服务器,点击添加或删除角色点击下一步 勾选自定义,点击下一步蒂埃涅吉终端服务器,点击下一步 点击确定重新登录后点击确定点击开始➡管理工具➡计算机管理,展开本地用户和组,点击组可以发现有个组关门用来远程......
  • TextIn调用API教程及避坑
    一.API调用在工作台中右上角点击获取机器人,进入产品市场,可以看到所有支持识别的类型,这里以通用文字识别为例,点进去后可以发现新用户有免费的1000次额度。然后点击API文档查看详细使用说明及示例代码CommonOcr类中的id和和secret_code输入自己的Id和密码,即可实现API调用,非......
  • springboot基于Java的远程就医系统
    摘要随着网络科技的不断发展以及人们经济水平的逐步提高,网络技术如今已成为人们生活中不可缺少的一部分,而信息管理系统是通过计算机技术,针对用户需求开发与设计,该技术尤其在各行业领域发挥了巨大的作用,有效地促进了远程就医的发展。然而,由于用户量和需求量的增加,信息过载等......
  • 升级你的会议体验:精准共享,MacBook投屏到安卓手机(可远程)
    投屏如画择精微,严选内容展所希。静谧画面心所向,独享时光意自知。在这个信息爆炸的时代,我们需要的不仅是屏幕共享功能,更是一份选择权。电脑投屏都不用提前费心思收拾电脑桌面,不用再三检查是否关闭所有不相关的应用程序和通知,避免投屏过程中弹出尴尬的信息,也不用担心非共享......
  • 详解Go程序添加远程调用tcpdump功能,exec.Command("sh", "-c", "ps -elf | grep xxx |
    摘自:https://www.jb51.net/article/249001.htm这篇文章主要介绍了go程序添加远程调用tcpdump功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 最近开发的telemetry采集系统上线了。听起来高大上,简单来说就是一个grpc/udp服务端,用......
  • 解决方案 | 一个VBA代码里面非常隐蔽的错误:运行时错误“5”:无效的过程调用或参数
    1代码部分代码功能:实现使用sumatra打开指定pdf指定页码代码:SubOpenPDFatPage()DimPDFFileAsStringDimPageNumberAsLongDimSumatraPathAsString'PDF文件路径PDFFile="C:\Users\Administrator\Desktop\22.pdf"'要打开的页......
  • Assetbundle.Unload(true)卸载资源时没调用ScriptableObject的OnDisable
    1)Assetbundle.Unload(true)卸载资源时没调用ScriptableObject的OnDisable2)UnityVolumeManager中ReplaceData如何优化3)关于使用Addressable的资源放在远程服务器后的下载问题4)Prefab对DLL中脚本的引用丢失这是第377篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答......
  • springcloud 基础组件-Feign 调用流程
    原图来自:https://blog.csdn.net/luanlouis/article/details/82821294所有注册的feignclientorg.springframework.cloud.openfeign.FeignAutoConfiguration#feignContext决定使用哪种client的地方org.springframework.cloud.openfeign.FeignAutoConfiguration.OkHttpFeignCo......
  • 什么是PLC远程控制模块?
    随着工业自动化的不断发展,可编程逻辑控制器(PLC)已成为现代工业设备中不可或缺的核心组件。然而,传统的PLC管理方式往往受限于现场操作和维护,难以满足日益复杂的工业需求。在这一背景下,PLC远程控制模块应运而生,为工业设备的远程管理带来了革命性的变革。今天,我们就来深入探讨一......
  • AWS 入门实践-远程访问AWS EC2 Linux虚拟机
    远程访问AWSEC2Linux虚拟机是AWS云计算服务中的一个基本且重要的技能。本指南旨在为初学者提供一系列步骤,以便成功地设置并远程访问他们的EC2Linux实例。包括如何上传下载文件、如何ssh远程登录EC2虚拟机。一、创建一个AWSEC2Linux虚拟机 创建一个AmazonEC2Linux虚......