在C#中调用Java程序实现数据交互,可以通过以下几种方法:
Java端(Spring Boot示例):
@RestController
public class DataController {
@GetMapping("/data")
public String getData() {
return "Hello from Java!";
}
}
C#端:
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using var httpClient = new HttpClient();
var response = await httpClient.GetAsync("http://localhost:8080/data");
var data = await response.Content.ReadAsStringAsync();
Console.WriteLine(data);
}
}
Java端:
public class DataJNI {
public native String getData();
static {
System.loadLibrary("datajni");
}
public static void main(String[] args) {
DataJNI dataJNI = new DataJNI();
System.out.println(dataJNI.getData());
}
}
C#端:
using System;
using System.Runtime.InteropServices;
class Program
{
[DllImport("datajni", CallingConvention = CallingConvention.Cdecl)]
public static extern string getData();
static void Main(string[] args)
{
string data = getData();
Console.WriteLine(data);
}
}
Java端(使用protoc编译器和grpc-java库):
// proto文件:data.proto
syntax = "proto3";
package data;
service DataService {
rpc getData (DataRequest) returns (DataResponse);
}
message DataRequest {
string id = 1;
}
message DataResponse {
string data = 1;
}
C#端(使用protoc编译器和grpc-net库):
// proto文件:data.proto
syntax = "proto3";
package data;
service DataService {
rpc GetData (DataRequest) returns (DataResponse);
}
message DataRequest {
string Id = 1;
}
message DataResponse {
string Data = 1;
}
在Java和C#中分别生成对应的客户端和服务端代码,然后实现数据交互。
这些方法都可以实现C#与Java之间的数据交互,你可以根据具体需求选择合适的方法。