pb调用java webservice_PB调用各类WebService或c#程序
慢慢的有很多接口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#程序相关推荐
- 使用C#调用Java带MIME附件WebService方法的初步设想
朋友说开发电信的MMS,其实需要图片作为附件放在调用WebService接口上,使用Http的Content-Type: Multipart/Related;来发送,真让人感觉不伦不类的.不知道为什么 ...
- c调用java jar_C#调用java类、jar包方法。
一.将已经编译后的java中Class文件进行打包:打包命令JAR 如:将某目录下的所有class文件夹全部进行打包处理: 使用的命令:jar cvf test.jar -C com/ . 其中tes ...
- webservice第一篇【介绍、Scoket、http调用、wsimport调用】
WebService介绍 首先我们来谈一下为什么需要学习webService这样的一个技术吧-. 问题一 如果我们的网站需要提供一个天气预报这样一个需求的话,那我们该怎么做????? 天气预报这么一个 ...
- axis2 webservice入门学识(JS,Java,PHP调用实例源码)
来源:http://www.myexception.cn/web/952419.html axis2 webservice入门知识(JS,Java,PHP调用实例源码) 背景简介 最近接触到一个银行接 ...
- .NET调用JAVA的WebService方法
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,在网上也有相关资料, ...
- c#调用java开发的webservice_用C#.NET调用Java开发的WebService传递int,double问题
用C#.NET调用Java开发的WebService时,先在客户端封装的带有int属性的对象,当将该对象传到服务器端时,服务器端可以得到string类型的属性值,却不能得到int类型.double和D ...
- java调用net_Java调用C#.net开发的WebService
1.开发C#.net的WebService服务 1.1点击"开始"->"程序"-> "Microsoft Visual Studio 20 ...
- 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获
2019独角兽企业重金招聘Python工程师标准>>> 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值! 用C#.NET调用 ...
- java调用net webservice_java调用.net的webservice
一.参考文献 二.概述 前面写了一篇博客eclipse+webservice 是在java环境下进行的.考虑到webservice的跨系统,跨语言,跨网络的特性,下面写了一个实例来测试其跨语言的的特性 ...
最新文章
- 深度学习检测小目标常用方法
- Python-输入输出
- TensorFlow tf.keras.layers.Permute
- matlab分段函数怎么画图_从零开始的matlab学习笔记——(17)其它实用的绘图工具...
- VS 中PageLayout 属性设置
- Keli5 更改任意喜欢的字体
- dos命令实现无限弹窗
- Logo设计技巧和方法
- 使用 RGL 制作交互式 3D 散点图
- 苹果手机各种尺寸详细表苹果X、苹果XS、苹果XR、苹果XSMax、苹果11、苹果11 Pro、苹果 11 Pro Max 、苹果12、苹果12mini、苹果 12 Pro Max、苹果12pro 尺寸
- 2018-09-26工作日报
- [Scala的协变和逆变]
- ecs卸载mysql_阿里云ECS卸载安骑士(阿里云盾)
- BP神经网络原理(附实验程序)
- 镜湖资本吴幽:集齐这六颗钻石、你就能成为区块链领域的灭霸
- 用python打造自己的SDK--使用setuptools打包安装
- 计算机网络的全局模式是,全局配置模式-计算机网络精品课程网.PPT
- 2018maya怎么加点_Maya2018新增了哪些共功能? Maya2018新功能全面预览
- 深度学习-兼顾工作与孩子
- 收音机c语言程序,基于单机收音机的C语言程序.doc