最近跟着陈刚老师做江西旅游通票的项目,目前尚处于技术储备阶段,分配给我的技术任务是用C#和C++客户端访问Java web service。我用C#的silverlight调用web service的时候老是出现跨域访问的错误,经过几天的努力,终于把问题解决了。 1. 首先确定web service已经成功发布,tomcat已经启动。测试方法是在浏览器中输入发布的WSDL文件的URL,如http://localhost:8080/axis2/services/helloWorld?wsdl 。如果正常显示wsdl内容说明这步没有问题。 2. 查看tomcat6.0/webapps/ROOT目录(具体目录根据具体情况而定)下是否有clientaccesspolicy.xml文件,如果没有则新建之,编辑内容如下: <?xml version="1.0" encoding="utf-8"?> 3. 如果做完第二步仍不行,可能是这个xml文件的编码问题,这个文件要用unicode编码,不能用ASCII编码,可用UltraEdit该编码,具体怎么改本人没有试,因为我是从别人机器里拷的正确的文件。
特别提醒: clientaccesspolicy.xml 必须在网站的根目录下,并且通过 http://{domainName}/clientaccesspolicy.xml可以访问到,如果设置了虚拟目录则不能访问到。 |