一:C#调用java服务代码:

调用方法:这里的M205RegistComment对象 是自定义的,就是跟返回的json序列化的对象保持一致就ok,

注意date时间需要转换为string 并且格式需要跟api一致,

http://172.16.5.32/api/website/topic/available/get 就是 java里面的API接口访问地址。

string param1 = JsonConvert.SerializeObject(new { member_no = cardNo, date = dateString });WebApiInvokeHelper.PostResponse<M205RegistComment>("http://172.16.5.32/api/website/topic/available/get", param1);

静态方法:用的是HttpContent 调用方法

   public static T PostResponse<T>(string url, string postData, string contentType = "application/json") where T : class, new(){T result = default(T);HttpContent httpContent = new StringContent(postData);httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue(contentType);httpContent.Headers.ContentType.CharSet = "utf-8";using (HttpClient httpClient = new HttpClient()){HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;if (response.IsSuccessStatusCode){Task<string> t = response.Content.ReadAsStringAsync();string s = t.Result;string json = JsonConvert.DeserializeObject(s).ToString();result = JsonConvert.DeserializeObject<T>(json);if (result == null){AppLog.Write(string.Format("API接口名称:{0},序列化失败原因:{1}", url, result.ToString()), LogMessageType.Error);}}else{AppLog.Write(string.Format("API接口名称:{0},调用失败原因:{1}", url, response.RequestMessage.ToString()), LogMessageType.Error);}}return result;}

二:java调用C#的Api接口代码:

1:小在pom里面引用工具,

第一个是序列化工具

第二个 http的工具类 也就是调用远程api的

第三个是加密的工具类

      <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-http</artifactId><version>5.3.8</version><scope>compile</scope><optional>true</optional></dependency><!--hutool 工具引入--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-crypto</artifactId><version>5.3.10</version><scope>compile</scope></dependency>

2: 调用get方法,在 hutool里面有好多方法,

例如get请求方法 用 HttpUtil类就可以 。这里也可以自定义先对hutool的方法自己封装一下再调用,也可以直接调用。

这里面会可以写post方法,或者其他方法,都可以调用hutool的方法

package com.greentree.h5webapi.utils;import cn.hutool.http.HttpUtil;
import java.util.Map;/*** @Desc: http 请求帮助类* *** @Date: created in 16:11 2021/4/1*/
public class HttpUtils {/*** get 请求** @param url      请求url* @param paramMap 请求参数* @return {@link String} 请求返回的结果*/public static String get(String url, Map<String, Object> paramMap) {return HttpUtil.get(url, paramMap);}
}

3:具体的方法调用,这里需要注意 config里面是配置的 调用的C#的API地址url,以及加密需要用到key ,这里做了一个安全验证,简单的签名。

这是一个公用方法,所有的调用第三方的get方法 都可以先走该方法,这里用会员做了一个加密,然后api方法也用相同的key加密校验

然后用户编号 跟sign 添加到map 里面去。

调用hutool的 get方法

    @Autowiredprivate WebsiteConfig config;private OriginalRequest getHttpResult(String url, Map<String, Object> param, String userId) {if (param == null) {return new OriginalRequest( );}// userId 加密if (!StringUtils.IsEmpty(userId)){String sign = SecureUtils.encryptDES(userId, config.getSignKey( ));param.put("userId", userId);param.put("sign", sign);}String resStr = HttpUtils.get(config.websiteUrl(url), param);return JSONObject.parseObject(resStr, OriginalRequest.class);}

4:这里是具体的用户登录方法调用。

WebsiteApiConstant.CHECK_PAY_PASSWORD 是一个 api的具体控制器方法

map是参数

userid是用户编号

    @Overridepublic Boolean checkPassWord(String userId, String password) {Map<String, Object> map = new HashMap<>( );map.put("password", password);OriginalRequest res = getHttpResult(WebsiteApiConstant.CHECK_PAY_PASSWORD, map, userId);if (res != null && res.getResult( ) && res.getData( ) != null) {CheckPayPassword data = JSONObject.parseObject(res.getData( ), CheckPayPassword.class);if (data != null) {return data.getIsSuccess( );}}return false;}
 

java与C#之间服务互相调用相关推荐

  1. gRPC基本使用(一)--java与go之间的相互调用

    为什么80%的码农都做不了架构师?>>>    gRPC是一个高性能.开源.通用的RPC框架,面向移动和HTTP/2设计.gRPC 默认使用 protocol buffers,这是 ...

  2. 微服务之间的最佳调用方式

    上一篇:3600万中国人在抖音"上清华" 0.2T架构师学习资料干货分享 茉莉花,别名:茉莉,拉丁文名:Jasminum sambac (L.) Ait,木犀科.素馨属直立或攀援灌 ...

  3. java包 类 方法_Java中包与包之间方法的调用及其关键字区分(基础)

    最近在写应用时,对包与包之间方法的调用不太清楚,专门看视频和网站后整理了这篇文章,希望对刚入门的同志有所帮助,进入主题. 首先我们先简单看看Java中private.protected.public和 ...

  4. Android JNI学习(五)——Java与Native之间如何实现相互调用

    本章将讲述Java与Native之间如何实现相互调用.我将围绕围绕如下三点来讲解. #mermaid-svg-qeVnGlVrLWrB5ryX .label{font-family:'trebuche ...

  5. java B2B2C源码电子商务平台 -SpringCloud服务相互调用RestTemplate

    Springcloud中的服务消费,就需要我们服务之前相互发请求了.之前我们都是想着用http请求相关的交互,用的比较多的是apache httpcomponents ,现在springboot提供了 ...

  6. JAVA类之间方法的调用

    JAVA类方法的调用 一.静态方法调用其他方法: 1. 静态方法调用非静态方法 2.静态方法调用静态方法 二.非静态方法调用其他方法 1.非静态方法在同一类内调用其他方法 2.非静态方法在不同类之间调 ...

  7. SpringCloud,Eureka,服务注册,微服务之间的项目调用

    文章目录 前言 一.Eureka是什么? 二.项目实现步骤 1.项目外壳的搭建 2.Eureka注册中心服务搭建 3.Provider(提供者)服务搭建 4.Consumer(消费者)服务搭建 总结 ...

  8. Java中Socket通信-服务端和客户端双向传输字符串实现

    场景 什么是socket 在计算机通信领域,socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台计算机可以接收其他计算机 ...

  9. 通过 Lotus Domino Java 代理消费 Web 服务

    Web 服务是一种允许两台或更多的计算机在网络中交互的系统设计.这种服务的主要优点是,它是在多台不同操作系统的计算机和应用服务器之间发送对象的标准解决方法.例如,我们的公司使用 Web 服务从一台运行 ...

最新文章

  1. 2008年 浙工大考研计算机专业课试题C++
  2. Python多版本管理器-pyenv 介绍及部署记录
  3. java证书的安装_Java 第三方证书安装
  4. 使用手机游戏的新闻推送
  5. 阿里云张献涛:公共云正不断向外延伸,一云多态是未来趋势
  6. server精简版代理意外终止 sql_来自阿里巴巴内部JAVA面试宝典意外流出
  7. 船舶定位实时查询系统_港口人员精准定位系统,实时安全管控与智能预警
  8. 寻找Linux单机负载瓶颈
  9. JDBC基本知识总结概括及8个阶段优化过程:
  10. mockjax MOCK.js的拦截ajax请求
  11. linux ftp远程更新,用ftp远程安装linux
  12. python2.7安装
  13. ISCC2021-WP合集
  14. DeepMind论文三连发:如何在仿真环境中生成灵活行为
  15. 点击图片放大功能 jquery
  16. vue学习笔记二:HBuilder X框架搭建
  17. 360屏保广告彻底关闭教程
  18. XCPC Team Trainning Round 1 (NCPC2018)
  19. php 足迹,php实现网站浏览足迹功能
  20. #发现你#小说的交互——交互故事性

热门文章

  1. (转)C语言家族扩展
  2. 第 258 场周赛(5867. 反转单词前缀/ 5868. 可互换矩形的组数 / 5869. 两个回文子序列长度的最大乘积(状态压缩) / 5870. 每棵子树内缺失的最小基因值(小大合并))
  3. vim删除奇数行_Vim 对特定行处理常用方法(三):奇偶行分离(及寄存器入门)...
  4. ​力扣解法汇总1374-生成每种字符都是奇数个的字符串
  5. Mac OS X截图操作
  6. 使用Fastai开发和部署图像分类器应用
  7. 巧用Rundll32命令安装和卸载Windows程序
  8. ARP攻击、欺骗及防御
  9. 64位Windows上最好的免费软件(Best Free Windows 64-bit Software)
  10. 不同数据库同步方式|异地数据库同步|mysql数据库实时同步工具|数据库实时同步