「java调用c接口」net调用java接口

博主:adminadmin 2023-01-19 15:30:08 340

本篇文章给大家谈谈java调用c接口,以及net调用java接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA如何调用C语言接口

我所知道的就是用c写成dll然后再被Java使用,其他的不太知道。。应该也只能用这一种了

JAVA怎么调用C写的接口函数

要不就使用内部类

要不就在Customer里面定义一个Cart类的对象。

也可以把你需要的方法定义成静态方法

public

static

void

xxxx();

Class.xxxx();来调用。。。

如何用Java调用C#写的带事件的COM接口

C#调用Java实现的WebService接口的步骤:

方法一:在项目中添加webservice引用,通过向导即能完成

方法二:为方便使用期间使用如下的两个命令来将java的webservice描述地址最终编译成一个动态库使用

1、生成类文件

wsdl.exe /l:cs /n:NWS /out:C:/NWS.cs http://***.***.**.**/WebSite1/Service?wsdl

2、将类文件编译成动态库

csc /target:library /out:"c:\NWS.dll" c:\NWS.cs

后面的使用就是一样的了

不过这里注意两个问题:

(1)描述地址最后的参数?wsdl有时候不可或缺,最好加上,因为最终要编译的就是这个wsdl文件。但如果是本地的wsdl文件的话,忽略此问题。

(2)wsdl.exe是微软VS中提供的一个工具,在VS命令好中可以直接调用出来 这里要记住/n:TestWS也即/namespace:TestWS自行定义的一个命名空间TestWS ,这个后续调用java的webservice提供的方法的时候会使用到。

java用jna调用C语言dll接口中的回调函数怎么写

简单的你会写,那就好办,直接上代码

public interface TestAPI extends StdCallLibrary {

    interface LoginReply extends StdCallCallback {

        /**

         * 登录回调

         */

        void invoke(String userId, long retCode, String retMsg);

    }

    /**

     * 注册一个登录回调方法.此方法是dll提供的

     */

    void RegisterLoginReply(LoginReply loginReply);

}

/**

 * 实现登录回调方法

 */

private class LoginReplyCallBack implements TestAPI.LoginReply {

    @Override

    public void invoke(String userId, long retCode, String retMsg) {

        log.info("登录回调方法:{},{},{}", userId, retCode, retMsg);

    }

}

// 设置登录回调

api.RegisterLoginReply(loginReplyCallBack);

JAVA调用C语言发布的webservice接口

Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。

1、编写代码方式:

package com.yudun.test;

import java.rmi.RemoteException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.message.PrefixedQName;

import org.apache.axis.message.SOAPHeaderElement;

import com.cezanne.golden.user.Exception;

import com.cezanne.golden.user.UserManagerServiceProxy;

import javax.xml.namespace.QName;

import java.net.MalformedURLException;

import javax.xml.rpc.ServiceException;

import javax.xml.soap.Name;

import javax.xml.soap.SOAPException;

public class testWebService {

public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException

  {

     //标识Web Service的具体路径

   String endpoint = "WebService服务地址";

     // 创建 Service实例

    Service service = new Service();   

     // 通过Service实例创建Call的实例

    Call call = (Call) service.createCall();

    //将Web Service的服务路径加入到call实例之中.

    call.setTargetEndpointAddress( new java.net.URL(endpoint) );//为Call设置服务的位置

   // 由于需要认证,故需要设置调用的SOAP头信息。   

    Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") ); 

          org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName); 

          header.addTextNode( "blablabla" ); 

          call.addHeader(header);

          

//    SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader");   

//    soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url");   

//    try  

//    {   

//        soapHeaderElement.addChildElement("string_itemName").setValue("blablabla");   

//    }   

//    catch (SOAPException e)   

//    {   

//        e.printStackTrace();   

//    }   

//    call.addHeader(soapHeaderElement);  

    //调用Web Service的方法

          org.apache.axis.description.OperationDesc oper;

          org.apache.axis.description.ParameterDesc param;

          oper = new org.apache.axis.description.OperationDesc();

          oper.setName("opName");

          param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);

          param.setOmittable(true);

          oper.addParameter(param);

          param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);

          param.setOmittable(true);

          oper.addParameter(param);

          param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName(", "string"), java.lang.String.class, false, false);

          param.setOmittable(true);

          oper.addParameter(param);

          oper.setReturnType(new javax.xml.namespace.QName(", "string"));

          oper.setReturnClass(java.lang.String.class);

          oper.setReturnQName(new javax.xml.namespace.QName("", "return"));

          oper.setStyle(org.apache.axis.constants.Style.WRAPPED);

          oper.setUse(org.apache.axis.constants.Use.LITERAL);

          oper.addFault(new org.apache.axis.description.FaultDesc(

                        new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"),

                        "Exception",

                        new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"), 

                        true

                       ));

   call.setOperation( oper );

   call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName"));

    //调用Web Service,传入参数

   String res = ( String ) call.invoke( new Object[]("arg0","arg1"));

   System.out.println("===============");

   return res;

  }

/**

  * @param args

  */

 public static void main(String[] args) {

  try {

   System.out.println(getResult());

  } catch (MalformedURLException e) {

   e.printStackTrace();

  } catch (RemoteException e) {

   e.printStackTrace();

  } catch (ServiceException e) {

   e.printStackTrace();

  } catch (SOAPException e) {

   e.printStackTrace();

  }

    }

}

2、利用Eclipse自动生成WebService client代码就容易多了:

首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish

这样,WebService Client代码已经生成好了。

接下来写一个Test类,在main函数中输入如下代码:

String endpoint = "服务器的WebService的地址";

 YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint);

 try {

 String resultStr = umsp.opMethod("arg0","arg1");

 System.out.println(resultStr);

 } catch (Exception e) {

 System.out.println("异常");

 e.printStackTrace();

} catch (RemoteException e) {

 System.out.println("RemoteException异常");

 e.printStackTrace();

}

关于java调用c接口和net调用java接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。