c#调用java

作者:原创时间:2022-03-21
文档

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.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;}
}

这个代码我用C#改写了,用HttpWebRequest的方式传到服务器,服务器那边Gzip解压不了,查了原因是因为Java与C#的Byte类型值范围不同,我们有两种解决思路,一种是将这个JAVA做成webservice挂在服务器上,c#再去调用。第二种就是将这个方法编译成可由C#直接调用的DLL,由于这个方法功能比较单一,我们选取了后者。

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

显示全文
c#调用java接口 cache java calendar java qq实名认证怎么解除 callable java character java class转java cmake java compareto java 被删的微信聊天记录怎么找回来 continue java django java 微信怎么群发消息给多人 double java dozer java eclipse创建java arrays java awesome java 小程序和app的区别 enum java brew java boolean java bitset java axis java asterisk java assert java 怎样改抖音名字的昵称 aspect java ansible java ajax java antlr java 交管12123怎么查科目一分数 abstract java 拼多多拒收在哪里操作 微信恢复删除的聊天记录 微信扫码不能扫了怎么办 怎样查看微信删除的聊天记录 两个二维码怎么拼一起 电脑忘记开机密码怎么办 js 字符串转数字