<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 更多精彩內(nèi)容,歡迎關(guān)注:

    視頻號(hào)
    視頻號(hào)

    抖音
    抖音

    快手
    快手

    微博
    微博

    c#調(diào)用java

    文檔

    c#調(diào)用java

    c#調(diào)用java是用.NET實(shí)現(xiàn)java虛擬機(jī),java類庫(kù)的.NET,c#調(diào)用java需要準(zhǔn)備一個(gè)C#類庫(kù)(dll),再編寫(xiě)一個(gè)java類,編譯java類并打包成jar,即可執(zhí)行。
    推薦度:
    導(dǎo)讀c#調(diào)用java是用.NET實(shí)現(xiàn)java虛擬機(jī),java類庫(kù)的.NET,c#調(diào)用java需要準(zhǔn)備一個(gè)C#類庫(kù)(dll),再編寫(xiě)一個(gè)java類,編譯java類并打包成jar,即可執(zhí)行。

    c#調(diào)用java是什么,讓我們一起了解一下?

    首先我們要知道,c#是什么?C#是微軟公司發(fā)布的一種面向?qū)ο蟮摹⑦\(yùn)行于.NET Framework和.NET Core(完全開(kāi)源,跨平臺(tái))之上的高級(jí)程序設(shè)計(jì)語(yǔ)言。

    那么我們?nèi)绾斡胏#調(diào)用java,來(lái)完成我們的工作?

    IKVM.NET是一個(gè)針對(duì)Mono和微軟.net框架的java實(shí)現(xiàn),其設(shè)計(jì)目的是在.NET平臺(tái)上運(yùn)行java程序。它包含了以下的組件:用.NET實(shí)現(xiàn)的java虛擬機(jī),java類庫(kù)的.NET實(shí)現(xiàn),致力于在java和.NET之間交互的工具。

    我們有一個(gè)JAVA寫(xiě)好的Demo,傳的參數(shù)是用Gzip進(jìn)行壓縮傳到服務(wù)器的,代碼如下:

    package?Demo;
    import?java.io.BufferedReader;
    import?java.io.ByteArrayInputstream;?import?java.io.ByteArrayoutputstream;?import?java.io.IOException:?import?javaio.Inputstream
    import?java.io.InputstreamReader;?import?java.io.objectInputStream;?import?java.io.0bjectoutputstream;
    import?java.util.zip.GZIPInputstream;?import?java.util.zipGZIPOutputStream;
    import?org.apache.commons.httpclient.HttpClient;
    import?org.apache.commons.httpclient.methods.PostMethod:
    import?org.apache.commons.httpclient.params.HttpClientParams;?import?com.google.gson.Gsonj
    public?class?Demo{
    public?static?string?dopostClient(string?json,?string?url){
    HttpClient?httpClient?=new?HttpClient();?String?rval?="";
    PostMethod?postMethod?=new?PostMethod(url);?try{
    Gson?gson?=new?Gson();
    Inputstream?in?=new?ByteArrayInputstream(objectToByte(json));?postMethod.setRequestBody(in);
    HttpClientParams?params?=new?HttpClientParams();?httpClient.setParams(params);
    httpClient.executeMethod(postMethod);
    byte[1?b=postMethod.getResponseBody();?String?rtnData?=(String)byteTo0bject(b);?rval=gson.toJson(rtnData);}?catch(Exception?e){
    rval="erro:"+e.getMessage();}?finally
    postMethod.releaseConnection()
    return?rval;}
    public?static?byte[]?objectToByte(javalang.0bject?obj){
    byte[]?bytes?=?null;
    Objectoutputstream?oo?=?hull;?try{
    ByteArrayOutputStream?out=newByteArrayOutputstream();?GZIPOutputStream?gzip?=newGZIPOutputStream(out);?gzip.write(obj.toString()getBytes("utf-8"));?gzip.close();
    bytes=out.toByteArray();
    }catch(Exception?e)
    e.printstackTrace();}finally{
    if(oo?!=?null){
    try{
    oo.close();
    }catch(IOExceptione){
    e.printstackTrace();}
    return?bytes;
    private?static?java.lang.Object?byteToobject(byte[]?bytes){
    String?obj?="";
    ObjectInputstream?oi?=null;?try{
    ByteArrayInputstream?bi?=?new?ByteArrayInputstream(bytes);?GZIPInputstream?gzipi=new?GZIPInputstream(bi);
    BufferedReader?bufferedReader?=?new?BufferedReader(new?InoutStreamReader(azipi."UTF-8"))?String?line;
    while((line?=bufferedReader.readLine())!=null)
    {
    obj+=line;}
    }?catch(Exception?e){
    e.printStackTrace();}finally{
    if(oi?!=?null)
    {
    try
    oi.close();
    }catch(I0Exception?e)
    e.printstackTrace();
    }
    }
    return?obj;}
    }

    這個(gè)代碼我用C#改寫(xiě)了,用HttpWebRequest的方式傳到服務(wù)器,服務(wù)器那邊Gzip解壓不了,查了原因是因?yàn)镴ava與C#的Byte類型值范圍不同,我們有兩種解決思路,一種是將這個(gè)JAVA做成webservice掛在服務(wù)器上,c#再去調(diào)用。第二種就是將這個(gè)方法編譯成可由C#直接調(diào)用的DLL,由于這個(gè)方法功能比較單一,我們選取了后者。

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    c#調(diào)用java

    c#調(diào)用java是用.NET實(shí)現(xiàn)java虛擬機(jī),java類庫(kù)的.NET,c#調(diào)用java需要準(zhǔn)備一個(gè)C#類庫(kù)(dll),再編寫(xiě)一個(gè)java類,編譯java類并打包成jar,即可執(zhí)行。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關(guān)推薦
    c#調(diào)用java接口 cache java calendar java qq實(shí)名認(rèn)證怎么解除 callable java character java class轉(zhuǎn)java cmake java compareto java 被刪的微信聊天記錄怎么找回來(lái) continue java django java 微信怎么群發(fā)消息給多人 double java dozer java eclipse創(chuàng)建java arrays java awesome java 小程序和app的區(qū)別 enum java brew java boolean java bitset java axis java asterisk java assert java 怎樣改抖音名字的昵稱 aspect java ansible java ajax java antlr java 交管12123怎么查科目一分?jǐn)?shù) abstract java 拼多多拒收在哪里操作 微信恢復(fù)刪除的聊天記錄 微信掃碼不能掃了怎么辦 怎樣查看微信刪除的聊天記錄 兩個(gè)二維碼怎么拼一起 電腦忘記開(kāi)機(jī)密碼怎么辦 js 字符串轉(zhuǎn)數(shù)字
    Top 国产乱码伦精品一区二区三区麻豆| 精品高潮呻吟99av无码视频| 国产精品自产拍在线网站| 99ri精品国产亚洲| 中文字幕精品无码一区二区三区| 国产精品久久亚洲一区二区| 久久中文字幕精品| 91精品国产免费久久国语蜜臀| 精品aⅴ一区二区三区| 人妻少妇精品视频专区| 日韩精品一区二区三区中文版| 亚洲午夜精品国产电影在线观看| 日本一区二区三区精品中文字幕| 黄大色黄美女精品大毛片| 精品午夜久久网成年网| 精品国产日韩久久亚洲| 国产精品久久久久9999| 99久久国产综合精品swag| 亚洲国产精品无码专区在线观看| 中文字幕日韩专区精品系列| 午夜精品久久影院蜜桃| 国产乱码精品一区三上| 国产精品白浆在线观看无码专区| 精品国产乱码久久久久久郑州公司 | 精品大臿蕉视频在线观看| 四虎永久在线精品免费网址| 久久久久亚洲精品无码网址色欲| 国产精品一区二区不卡| 亚洲精品亚洲人成在线麻豆| 78成人精品电影在线播放日韩精品电影一区亚洲 | 久久精品香蕉视频| 国内精品久久久久久野外| 伊人久久精品无码二区麻豆| 伊人这里只有精品| 亚洲精品乱码久久久久久| 中文字幕精品无码一区二区三区| 中文字幕一区二区三区日韩精品| 自拍中文精品无码| 国产精品日韩AV在线播放| 久久国产精品免费专区| 久久丫精品国产亚洲av不卡|