c#調用java
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
c#調用java是什麼,讓我們一起了解一下?
首先我們要知道,c#是什麼?C#是微軟公司發佈的一種面向對象的、運行於.NET Framework和.NET Core(完全開源,跨平臺)之上的高級程序設計語言。
那麼我們如何用c#調用java,來完成我們的工作?
IKVM.NET是一個針對Mono和微軟.net框架的java實現,其設計目的是在.NET平臺上運行java程序。它包含了以下的組件:用.NET實現的java虛擬機,java類庫的.NET實現,致力於在java和.NET之間交互的工具。
我們有一個JAVA寫好的Demo,傳的參數是用Gzip進行壓縮傳到服務器的,代碼如下:
package Demo;import java.io.BufferedReader;import java.io.ByteArrayInputstream; import java.io.ByteArrayoutputstream; import java.io.IOException: import javaio.Inputstreamimport 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.Gsonjpublic 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();} finallypostMethod.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){tryoi.close();}catch(I0Exception e)e.printstackTrace();}}return obj;}}
這個代碼我用C#改寫了,用HttpwebRequest的方式傳到服務器,服務器那邊Gzip解壓不了,查了原因是因爲Java與C#的Byte類型值範圍不同,我們有兩種解決思路,一種是將這個JAVA做成webservice掛在服務器上,c#再去調用。第二種就是將這個方法編譯成可由C#直接調用的DLL,由於這個方法功能比較單一,我們選取了後者。
-
蘋果手機長圖怎麼截圖,蘋果手機截長圖的兩種方法
1、長截圖辦法一iOS13上新之後自帶的長截圖方法,是在我們瀏覽網頁的時候使用的。操作方法:上音量鍵+開關鍵一起按下,然後點開截好的圖片,選擇“整頁”截圖即可。2、長截圖方法二利用QQ實現長截圖。操作方法:首先就是需要我們打開QQ,然後試着上音量鍵+開關鍵一起按下...
-
省內移動數據流量是指什麼
省內移動數據流量是指你的SIM卡所屬省份的可用GPRS流量,如果出了你的卡所屬的省份,去別的省,那省內移動數據流量就不可以使用,只能使用全國通用流量。移動數據流量有省內流量和全國通用流量,國內流量和省內流量是有所區別的。首先優先度不同:正常情況下,如果用戶在自...
-
關於底噪的意思介紹
1、底噪亦稱背景噪聲,基本所有的好耳機都有底噪,耳機底噪一般都是因爲前端的問題,耳機的靈敏度越高對於底噪就越敏感,一些高靈敏度和低阻抗的耳機會把底噪放大,如果加大音量的情況下,底噪會更加的明顯。2、檢測MP3底噪,一般方法是在夜晚等比較安靜的環境中戴上耳機,播...
-
黑色背景拍照竅門詳解
1、調整拍攝角度,尋找背景:既然是拍攝黑背景,在拍攝前我們儘量選擇深色的背景,這樣也就更加容易達到效果。不過深色不一定要是純黑色,只要顏色較爲深沉,偏向暗色調的均可。拍攝前多多觀察,尋找不同的拍攝角度,以找到有反差的深色作爲背景。要多嘗試不同的角度,直至主體...