温馨提示×

java调用c#能返回结果吗

小樊
88
2024-12-01 16:13:17
栏目: 编程语言

是的,Java可以通过多种方式调用C#代码并获取返回结果。这里有两种常见的方法:

  1. 使用JNI(Java Native Interface): JNI允许Java代码与本地代码(如C和C++)进行交互。要使用JNI调用C#代码,您需要创建一个C# DLL,其中包含要从Java调用的函数。然后,您可以使用Java的java.lang.System.loadLibrary()方法加载此DLL,并使用JNI调用其中的函数。

  2. 使用REST API或gRPC: 另一种方法是在C#中创建一个Web服务(如REST API或gRPC),并在Java客户端中调用该服务。这种方法不需要直接调用C#代码,而是通过HTTP请求与C#服务进行通信。

以下是使用REST API的简单示例:

C#(C#服务端):

using System;
using System.Web.Http;

namespace CsharpWebService
{
    [ApiController]
    [Route("api/[controller]")]
    public class HelloWorldController : ControllerBase
    {
        [HttpGet]
        public string Get()
        {
            return "Hello from C#!";
        }
    }
}

Java(Java客户端):

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class JavaClient {
    public static void main(String[] args) {
        try {
            String url = "http://localhost:5000/api/hello";
            URL obj = new URL(url);
            HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
            connection.setRequestMethod("GET");
            connection.setRequestProperty("User-Agent", "Mozilla/5.0");

            int responseCode = connection.getResponseCode();
            System.out.println("Response Code: " + responseCode);

            if (responseCode == HttpURLConnection.HTTP_OK) {
                BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
                String inputLine;
                StringBuilder response = new StringBuilder();

                while ((inputLine = in.readLine()) != null) {
                    response.append(inputLine);
                }
                in.close();

                System.out.println("Response: " + response.toString());
            } else {
                System.out.println("GET request failed");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,C#服务端创建了一个简单的Web API,Java客户端通过HTTP请求调用该API并获取返回结果。

0