为了账号安全,请及时绑定邮箱和手机立即绑定

java调用.net asmx / wcf

标签:
Java

一、先用asmx与wcf写二个.net web service:

1.1 asmx web服务:asmx-service.asmx.cs

 1 using System;

 2 using System.Collections.Generic;

 3 using System.Linq;

 4 using System.Web;

 5 using System.Web.Services;

 6 

 7 namespace WebServiceSample

 8 {

 9     /// <summary>

10     /// Summary description for asmx_service

11     /// </summary>

12     [WebService(Namespace = "http://yjmyzz.cnblogs.com/")]

13     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

14     [System.ComponentModel.ToolboxItem(false)]

15     // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 

16     // [System.Web.Script.Services.ScriptService]

17     public class asmx_service : System.Web.Services.WebService

18     {

19 

20         [WebMethod]

21         public string HelloWorld(String msg)

22         {

23             return "Hello " + msg + " !";

24         }

25     }

26 }

1.2 wcf服务:wcf-service.svc.cs

 1 using System;

 2 using System.Collections.Generic;

 3 using System.Linq;

 4 using System.Runtime.Serialization;

 5 using System.ServiceModel;

 6 using System.Text;

 7 using System.Web.Services;

 8 

 9 namespace WebServiceSample

10 {

11     // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "wcf_service" in code, svc and config file together.

12     // NOTE: In order to launch WCF Test Client for testing this service, please select wcf-service.svc or wcf-service.svc.cs at the Solution Explorer and start debugging.

13     [ServiceContract(Namespace="http://yjmyzz.cnblogs.com/")]

14     [ServiceBehavior(Namespace = "http://yjmyzz.cnblogs.com/")]

15     public class wcf_service

16     {

17         [OperationContract]

18         public String HelloWorld(String msg)

19         {

20             return "Hello " + msg + " !";

21         }

22     }

23 }

1.3 web.config采用默认设置:

1 <?xml version="1.0" encoding="utf-8"?>

 2 <configuration>

 3   <system.web>

 4     <compilation debug="true" targetFramework="4.5.1" />

 5     <httpRuntime targetFramework="4.5.1" />

 6   </system.web>

 7   <system.serviceModel>

 8     <behaviors>

 9       <serviceBehaviors>

10         <behavior name="">

11           <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

12           <serviceDebug includeExceptionDetailInFaults="false" />

13         </behavior>

14       </serviceBehaviors>

15     </behaviors>

16     <serviceHostingEnvironment aspNetCompatibilityEnabled="true"

17       multipleSiteBindingsEnabled="true" />

18   </system.serviceModel>

19 </configuration>

完成后,访问网址为:

http://localhost:16638/asmx-service.asmx

http://localhost:16638/wcf-service.svc

 

二、java端的调用:

2.1 pom.xml中先添加以下依赖项:

 1 <dependency>

 2             <groupId>org.apache.axis</groupId>

 3             <artifactId>axis</artifactId>

 4             <version>1.4</version>            

 5         </dependency>

 6 

 7         <dependency>

 8             <groupId>org.apache.axis</groupId>

 9             <artifactId>axis-jaxrpc</artifactId>

10             <version>1.4</version>            

11         </dependency>

12 

13         <dependency>

14             <groupId>wsdl4j</groupId>

15             <artifactId>wsdl4j</artifactId>

16             <version>1.6.3</version>            

17         </dependency>

18 

19         <dependency>

20             <groupId>commons-discovery</groupId>

21             <artifactId>commons-discovery</artifactId>

22             <version>0.5</version>            

23         </dependency>

24 

25         <dependency>

26             <groupId>commons-logging</groupId>

27             <artifactId>commons-logging</artifactId>

28             <version>1.1.3</version>            

29         </dependency>

2.2 asmx web service的调用:

先封装一个方法:

 1     String callAsmxWebService(String serviceUrl, String serviceNamespace,

 2             String methodName, Map<String, String> params)

 3             throws ServiceException, RemoteException, MalformedURLException {

 4 

 5         org.apache.axis.client.Service service = new org.apache.axis.client.Service();

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

 7         call.setTargetEndpointAddress(new java.net.URL(serviceUrl));

 8         call.setOperationName(new QName(serviceNamespace, methodName));

 9 

10         ArrayList<String> paramValues = new ArrayList<String>();

11         for (Entry<String, String> entry : params.entrySet()) {

12             call.addParameter(new QName(serviceNamespace, entry.getKey()),

13                     XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

14             paramValues.add(entry.getValue());

15         }

16 

17         call.setReturnType(XMLType.XSD_STRING);

18         call.setUseSOAPAction(true);

19         call.setSOAPActionURI(serviceNamespace + methodName);

20 

21         return (String) call.invoke(new Object[] { paramValues.toArray() });

22 

23     }

然后就可以调用了:

 1     @Test

 2     public void testCallAsmx() throws RemoteException, ServiceException,

 3             MalformedURLException {        

 4 

 5         Map<String, String> params = new HashMap<String, String>();

 6         params.put("msg", "yjmyzz");

 7 

 8         String result = callAsmxWebService(

 9                 "http://localhost:16638/asmx-service.asmx",

10                 "http://yjmyzz.cnblogs.com/", "HelloWorld", params);

11 

12         System.out.println(result);

13     }

 

2.3 wcf服务的调用:

这个要借助IDE环境生成代理类(或者用命令JAVA_HOME\bin\wsimport.exe -s  c:\test\javasrc http://xxx.com/xxx.svc?wsdl)

eclipse环境中,project上右击->New->Other->Web Service Client

输入wsdl的地址,注意:wcf会生成二个wsdl的地址,用xxx?singleWsdl这个,如下图:

直接Finish,会生成一堆java文件:

然后就能调用啦:

1     @Test

2     public void testCallWcf() throws RemoteException, ServiceException,

3             MalformedURLException {        

4         

5         Wcf_service_ServiceLocator locator = new Wcf_service_ServiceLocator();

6         locator.setBasicHttpBinding_wcf_serviceEndpointAddress("http://localhost:16638/wcf-service.svc");

7         System.out.println(locator.getBasicHttpBinding_wcf_service().helloWorld("jimmy"));         

8     }

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消