慢慢的有很多接口pb都已经无法调用了,还有一些进制计算,位移等pb都无法实现,这时最简单的就是用c#做好,让pb调用。但是pb只能调用最基础的c++开发的标准dll。通过无数次的百度,我找到了一个好的方法,也许您已经知道了。但是我觉得还是要写出来,只要还有一个为此发愁的朋友存在。谢谢!

方法思路是:

1、​用c#写一个类,方法的参数一定要用标准数据类型,返回值也要是标准数据类型(string、int或者结构等等)。在这个方法里面调用各类webservice或其他http接口等pb无法直接调用的。

2、我正巧要做一个调用java写的webservice,下面贴出代码,供参考,因为用csc.exe编译程序无法处理引用,所以

using System;

using System.Collections.Generic;

using System.Text;

using System.Security.Cryptography;

namespace ysxt

{

public class

ws

{

public string sendrecv(string sUser, string

sPwd)

{

string

retu = "";

try

{

xjca.YsxtMainServiceImplService myrefe = new

xjca.YsxtMainServiceImplService();

//这里就是解决csc.exe无法编译引用问题的,xjca是在另外一个ysws.cs文件里,这个cs文件不是我写的,也不能写出来,这是用另外一个命令生成出来的,具体命令看本文最后备注

myrefe.Url =

myUrl;

retu = myrefe.sendRecv(sUser,

sPwd);

}

catch

(Exception e)

{

return

e.Message;//一定要用

try....catch,否则pb调用过程中出现错误,都没有办法知道哪里错了,这句话就是关键。

}

return

sSign + "\r\n" + retu;

}

}

}

3、​关键:将c#程序编译成PB可以调用的COM,为了调试方便,我将编译程序写成了一个bat批处理文件,和.cs程序放在一个目录里面。以下是这个bat文件脚本,很简单的。​

c:

cd C:\Program Files\Microsoft

SDKs\Windows\v7.0A\bin

sn.exe -k D:\program\ysxt\ysxt\ysxt.snk

d:

cd D:\program\ysxt\ysxt\

C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /t:library

/keyfile:ysxt.snk /out:ysxt.dll ys*.cs

​简单解释一下:我写的c#程序在两个ys开头的.cs文件里面。只要这2个文件,执行这个bat批处理之后,将会在目录下出现snk文件,放着别管他。

4、注册:执行完bat之后,​程序目录下会出现一个dll文件,我的就是ysxt.dll。然后再监理一个bat文件,这个文件以后要一起给客户,他们在安装程序的时候都要执行,当你升级这个dll的时候,也要再次执行,因为光覆盖整个dll是不起作用的,要重新注册,注册用的bat文件如下:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe /u

ysxt.dll

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe

ysxt.dll /tlb:ysxt.tlb /codebase

再简单解释一下,这些exe文件也许在你电脑上的路径和我不同,版本也许不同,但是我喜欢用framwork2.0

或 3.5版本的,这样去客户端无需安装.net framework环境

5、以下就是pb调用已经注册好的dll的方法了

OLEObject ole_1

long ll_status

stringls_ret

//创建OLEObject对象

ole_1 = Create OLEObject

ll_status= ole_1.ConnectToNewObject("ysxt.ws")

//ysxt是我c#代码中的命名空间,ws是c#代码中的类名

if ll_status <> 0

then

messagebox("打开com失败",string(ll_status))

ole_1.DisConnectObject()

return -1

end if

ls_ret =

ole_1.sendrecv("aaa", "bbb"") //这是c#代码中实现接口调用的方法

ole_1.DisConnectObject()

destroy ole_1

6、最后贴出一个遗漏的,就是如何用命令行生成webservice引用的cs文件

c:

cd C:\Program Files\Microsoft

SDKs\Windows\v7.0A\bin\

wsdl.exe /language:c# /n:xjca

/out:D:\HIS1\program\ysxt\ysxt\ysws.cs

http://172.16.186.6/ysxt-wscs/service/mainservice?wsdl

这个很关键​,不用这个办法编译不了调用web引用的cs文件​

7、最后说个注意事项,pb支持调用的c#方法不能是静态的,就是不能写public

static,只能是public

。如果需要帮助,可以mail我,jinhui7@hotmail.com,我希望能帮到你,因为助人为乐。​​

​​

慢慢的有很多接口pb都已经无法调用了,还有一些进制计算,位移等pb都无法实现,这时最简单的就是用c#做好,让pb调用。但是pb只能调用最基础的c++开发的标准dll。通过无数次的百度,我找到了一个好的方法,也许您已经知道了。但是我觉得还是要写出来,只要还有一个为此发愁的朋友存在。谢谢!

方法思路是:

1、​用c#写一个类,方法的参数一定要用标准数据类型,返回值也要是标准数据类型(string、int或者结构等等)。在这个方法里面调用各类webservice或其他http接口等pb无法直接调用的。

2、我正巧要做一个调用java写的webservice,下面贴出代码,供参考,因为用csc.exe编译程序无法处理引用,所以

using System;

using System.Collections.Generic;

using System.Text;

using System.Security.Cryptography;

namespace ysxt

{

public class

ws

{

public string sendrecv(string sUser, string

sPwd)

{

string

retu = "";

try

{

xjca.YsxtMainServiceImplService myrefe = new

xjca.YsxtMainServiceImplService();

//这里就是解决csc.exe无法编译引用问题的,xjca是在另外一个ysws.cs文件里,这个cs文件不是我写的,也不能写出来,这是用另外一个命令生成出来的,具体命令看本文最后备注

myrefe.Url =

myUrl;

retu = myrefe.sendRecv(sUser,

sPwd);

}

catch

(Exception e)

{

return

e.Message;//一定要用

try....catch,否则pb调用过程中出现错误,都没有办法知道哪里错了,这句话就是关键。

}

return

sSign + "\r\n" + retu;

}

}

}

3、​关键:将c#程序编译成PB可以调用的COM,为了调试方便,我将编译程序写成了一个bat批处理文件,和.cs程序放在一个目录里面。以下是这个bat文件脚本,很简单的。​

c:

cd C:\Program Files\Microsoft

SDKs\Windows\v7.0A\bin

sn.exe -k D:\program\ysxt\ysxt\ysxt.snk

d:

cd D:\program\ysxt\ysxt\

C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe /t:library

/keyfile:ysxt.snk /out:ysxt.dll ys*.cs

​简单解释一下:我写的c#程序在两个ys开头的.cs文件里面。只要这2个文件,执行这个bat批处理之后,将会在目录下出现snk文件,放着别管他。

4、注册:执行完bat之后,​程序目录下会出现一个dll文件,我的就是ysxt.dll。然后再监理一个bat文件,这个文件以后要一起给客户,他们在安装程序的时候都要执行,当你升级这个dll的时候,也要再次执行,因为光覆盖整个dll是不起作用的,要重新注册,注册用的bat文件如下:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe /u

ysxt.dll

C:\Windows\Microsoft.NET\Framework\v2.0.50727\regasm.exe

ysxt.dll /tlb:ysxt.tlb /codebase

再简单解释一下,这些exe文件也许在你电脑上的路径和我不同,版本也许不同,但是我喜欢用framwork2.0

或 3.5版本的,这样去客户端无需安装.net framework环境

5、以下就是pb调用已经注册好的dll的方法了

OLEObject ole_1

long ll_status

stringls_ret

//创建OLEObject对象

ole_1 = Create OLEObject

ll_status= ole_1.ConnectToNewObject("ysxt.ws")

//ysxt是我c#代码中的命名空间,ws是c#代码中的类名

if ll_status <> 0

then

messagebox("打开com失败",string(ll_status))

ole_1.DisConnectObject()

return -1

end if

ls_ret =

ole_1.sendrecv("aaa", "bbb"") //这是c#代码中实现接口调用的方法

ole_1.DisConnectObject()

destroy ole_1

6、最后贴出一个遗漏的,就是如何用命令行生成webservice引用的cs文件

c:

cd C:\Program Files\Microsoft

SDKs\Windows\v7.0A\bin\

wsdl.exe /language:c# /n:xjca

/out:D:\HIS1\program\ysxt\ysxt\ysws.cs

http://172.16.186.6/ysxt-wscs/service/mainservice?wsdl

这个很关键​,不用这个办法编译不了调用web引用的cs文件​

7、最后说个注意事项,pb支持调用的c#方法不能是静态的,就是不能写public

static,只能是public

。如果需要帮助,可以mail我,jinhui7@hotmail.com,我希望能帮到你,因为助人为乐。​​

​​

pb调用java webservice_PB调用各类WebService或c#程序相关推荐

  1. 使用C#调用Java带MIME附件WebService方法的初步设想

    朋友说开发电信的MMS,其实需要图片作为附件放在调用WebService接口上,使用Http的Content-Type: Multipart/Related;来发送,真让人感觉不伦不类的.不知道为什么 ...

  2. c调用java jar_C#调用java类、jar包方法。

    一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...

  3. webservice第一篇【介绍、Scoket、http调用、wsimport调用】

    WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧-. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做????? 天气预报这么一个 ...

  4. axis2 webservice入门学识(JS,Java,PHP调用实例源码)

    来源:http://www.myexception.cn/web/952419.html axis2 webservice入门知识(JS,Java,PHP调用实例源码) 背景简介 最近接触到一个银行接 ...

  5. .NET调用JAVA的WebService方法

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...

  6. c#调用java开发的webservice_用C#.NET调用Java开发的WebService传递int,double问题

    用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...

  7. java调用net_Java调用C#.net开发的WebService

    1.开发C#.net的WebService服务 1.1点击"开始"->"程序"-> "Microsoft Visual Studio 20 ...

  8. 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获

    2019独角兽企业重金招聘Python工程师标准>>> 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值! 用C#.NET调用 ...

  9. java调用net webservice_java调用.net的webservice

    一.参考文献 二.概述 前面写了一篇博客eclipse+webservice 是在java环境下进行的.考虑到webservice的跨系统,跨语言,跨网络的特性,下面写了一个实例来测试其跨语言的的特性 ...

最新文章

  1. 深度学习检测小目标常用方法
  2. Python-输入输出
  3. TensorFlow tf.keras.layers.Permute
  4. matlab分段函数怎么画图_从零开始的matlab学习笔记——(17)其它实用的绘图工具...
  5. VS 中PageLayout 属性设置
  6. Keli5 更改任意喜欢的字体
  7. dos命令实现无限弹窗
  8. Logo设计技巧和方法
  9. 使用 RGL 制作交互式 3D 散点图
  10. 苹果手机各种尺寸详细表苹果X、苹果XS、苹果XR、苹果XSMax、苹果11、苹果11 Pro、苹果 11 Pro Max 、苹果12、苹果12mini、苹果 12 Pro Max、苹果12pro 尺寸
  11. 2018-09-26工作日报
  12. [Scala的协变和逆变]
  13. ecs卸载mysql_阿里云ECS卸载安骑士(阿里云盾)
  14. BP神经网络原理(附实验程序)
  15. 镜湖资本吴幽:集齐这六颗钻石、你就能成为区块链领域的灭霸
  16. 用python打造自己的SDK--使用setuptools打包安装
  17. 计算机网络的全局模式是,全局配置模式-计算机网络精品课程网.PPT
  18. 2018maya怎么加点_Maya2018新增了哪些共功能? Maya2018新功能全面预览
  19. 深度学习-兼顾工作与孩子
  20. 收音机c语言程序,基于单机收音机的C语言程序.doc

热门文章

  1. 在linux中常用的shell备份脚本(波大帅哥)
  2. Https的数据请求的证书设置
  3. mysql基本命令总结
  4. LogDashboard 1.0.4 版本发布
  5. 华为hcnp认证考试已过
  6. FreeRTOS(一)——任务管理
  7. AbleCloud与物联智慧战略合作,联合服务视频类智能硬件
  8. Kotlin教程 - 收藏集 - 掘金
  9. WPF MVVM 验证
  10. Linux 常用名利总结