c#调用java的Servlet/Controller/Action实现应用间无缝调用

c#调用java的Servlet/Controller/Action实现应用间无缝调用


               现代企业信息化在有了一定的基础之后,大部分企业都会意识到数据孤岛,什么是数据孤岛呢?就是各个系统的数据库相互独立,各个系统各自建立各自的基础资料等相关信息,系统信息量维护大,重复劳动较多,基础资料维护困难,在出去相关报表的时候,数据对应困难,无法快速的实现各系统之间的数据交互。随之而来的就是数据整合,往往在没有长期规划的情况下,对数据简单的进行集中处理,往往结果就是对整体没有多大帮助,反而会因为数据的错误无法快速定位,反而适得其反,其实在没有合理的规划的时候,通过应用间的接口调用,根据需求进行相应的接口开放才是最佳的解决方案。

               今天我们来说说应用间的交互,同语言开发的程序,在交互上不存在很大的疑问,我们主要是针对不同语言开发的应用进行交互,一般我们有两种方式,

第一种:webservice,这种方式不用说了,非常简单,但是XML交互,数据量大了问题会很多

第二种:http,使用http可以解决很多问题,而且http所有网络通信都支持,所以我们就使用http来进行应用间的通信,JAVA中我们使用HttpClient来进行交互,c#中我们使用HttpWebRequest来进行交互,其实原理非常简单,就是模仿提交表单的操作。

返回的JSON如下:

[javascript] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. {"obj":{  
  2.          object  
  3.        }  
  4. }  
调用代码如下:
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.IO;  
  4. using System.Linq;  
  5. using System.Net;  
  6. using System.Text;  
  7. using System.Threading.Tasks;  
  8. using System.Web.Script.Serialization;  
  9.   
  10. namespace ConsoleApplication5  
  11. {  
  12.     public class Program  
  13.     {  
  14.         public static void Main(string[] args)  
  15.         {  
  16.             string url = "http://IP:port/servlet";  
  17.             string param = "key=value&key1=value1";  
  18.             postHttpRequest(url, param);  
  19.         }  
  20.         /* 
  21.          * url:请求的servlet地址,不带参数 
  22.          * parm:请求的参数,key=value&key1=value1 
  23.          * **/  
  24.         public static void postHttpRequest(string url, string param)   
  25.         {  
  26.             HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);  
  27.             request.Method = "POST";  
  28.             request.ContentType = "application/x-www-form-urlencoded";  
  29.             request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0";  
  30.             string requestForm = param;  
  31.             byte[] postdatabyte = Encoding.UTF8.GetBytes(requestForm);  
  32.             request.ContentLength = postdatabyte.Length;  
  33.             request.AllowAutoRedirect = false;  
  34.             request.KeepAlive = true;  
  35.             Stream stream;  
  36.             stream = request.GetRequestStream();  
  37.             stream.Write(postdatabyte, 0, postdatabyte.Length);  
  38.             stream.Close();  
  39.             HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
  40.             Stream responseStream = response.GetResponseStream();  
  41.             StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);  
  42.             string str_serializer = streamReader.ReadToEnd();  
  43.             JavaScriptSerializer _jsonobj = new JavaScriptSerializer();  
  44.             PermanentBean _obj = _jsonobj.Deserialize<JsonObject>(str_serializer).obj;  
  45.             Console.WriteLine(_obj.permanent_num);  
  46.         }  
  47.     }  
  48.   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值