关于DELPHI调用JAVA 的webservice问题

lpq21314-08 2014-07-10 11:13:29
需要调用一个短信接口,只有JAVA的事例,代码如下:

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceFactory;
import java.net.URL;

public class Client_testSMS {
public static void main(String [] args) throws Exception {
// 指出service所在URL
String endpoint = "http://181.5.xxx.xxx:8080/services/Sms";
// 创建一个服务(service)调用(call)
Service service = new Service();
Call call = (Call) service.createCall();// 通过service创建call对象
// 设置service所在URL
call.setTargetEndpointAddress(new java.net.URL(endpoint));
// 方法名(processService)与MyService.java方法名保持一致
//call.setOperationName("DoSendMobilePaper");
call.setOperationName("send");

// Object 数组封装了参数,参数为"This is Test!",调用processService(String arg)
String ret = (String) call.invoke(new Object[]{"mycp","test,test","123,123","158xxx88888","sms测试中文"});
System.out.println(ret);
}

}


用delphi来编写,方法如下:新建一个工程,然后新建-> other-> webservices,选择 WSDL Importer ,然后输入WSDL 地址,
生成一个webservice文件,然后添加一个 THTTPRIO 控件,调用webservice方法的代码为:


HTTPRIO1.URL:='http://181.5.xxx.xxx:8080/services/Sms?wsdl';
edit1.Text:=(HTTPRIO1 as Sms).send('mycp','test,test','123,123','158xxx88888,'测试短信');



点击发送短信时,提示一个访问内存错误。
请问大家这种调用webservice方法有没有问题?
...全文
212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpq21314-08 2014-07-18
  • 打赏
  • 举报
回复
引用 3 楼 nm_wyh 的回复:
[quote=引用 2 楼 u014653768 的回复:] [quote=引用 1 楼 zhuolong1987 的回复:] 你试着把你的程序添加到数据执行保护的排除列表
数据执行保存的排除列表再哪里添加啊?能具体说一下怎么操作吗?[/quote] 一般Delphi7编译的程序在win 2003 Server下运行就有这个问题,有些XP也有这问题,原因就是数据执行保护。 在【我的电脑】右键【属性】->【高级】->第一个【设置】里面有一个【数据执行保护】,你可以选择第一项最简单,选择第二项,就需要把你的程序添加到列表中。第一个一功永逸,需要重启计算机,第二个不需要。[/quote] 就是这个原因,问题解决了,谢谢!
lpq21314-08 2014-07-18
  • 打赏
  • 举报
回复
引用 5 楼 lijiehnu 的回复:
你的代码应该这样对HTTPRIO1初始化 HTTPRIO1.WSDLLocation :='http://181.5.xxx.xxx:8080/services/Sms?wsdl'; //defWSDL HTTPRIO1.Service := 'XXProxyService' ; //defSvc HTTPRIO1.Port := 'XX'; //defPrt
不行,还是一样报错
Super_JerryLi 2014-07-17
  • 打赏
  • 举报
回复
你的代码应该这样对HTTPRIO1初始化 HTTPRIO1.WSDLLocation :='http://181.5.xxx.xxx:8080/services/Sms?wsdl'; //defWSDL HTTPRIO1.Service := 'XXProxyService' ; //defSvc HTTPRIO1.Port := 'XX'; //defPrt
lpq21314-08 2014-07-17
  • 打赏
  • 举报
回复
我是在 win2008 64bit 下编译的
nm_wyh 2014-07-16
  • 打赏
  • 举报
回复
引用 2 楼 u014653768 的回复:
[quote=引用 1 楼 zhuolong1987 的回复:] 你试着把你的程序添加到数据执行保护的排除列表
数据执行保存的排除列表再哪里添加啊?能具体说一下怎么操作吗?[/quote] 一般Delphi7编译的程序在win 2003 Server下运行就有这个问题,有些XP也有这问题,原因就是数据执行保护。 在【我的电脑】右键【属性】->【高级】->第一个【设置】里面有一个【数据执行保护】,你可以选择第一项最简单,选择第二项,就需要把你的程序添加到列表中。第一个一功永逸,需要重启计算机,第二个不需要。
lpq21314-08 2014-07-11
  • 打赏
  • 举报
回复
引用 1 楼 zhuolong1987 的回复:
你试着把你的程序添加到数据执行保护的排除列表
数据执行保存的排除列表再哪里添加啊?能具体说一下怎么操作吗?
zhuolong1987 2014-07-10
  • 打赏
  • 举报
回复
你试着把你的程序添加到数据执行保护的排除列表

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧