2014-03-31 52 views
0

我有Java应用程序向特定端口发送HTTP请求。这段代码是这样的:如何使WCF服务监听特定端口并接收HTTP请求

 URL url = new URL("http://localhost:8080/"); 
     HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 
     httpCon.setDoOutput(true); 
     httpCon.setRequestMethod("POST"); 
     OutputStreamWriter out = new OutputStreamWriter(
     httpCon.getOutputStream()); 
     System.out.println(httpCon.getResponseCode()); 
     System.out.println(httpCon.getResponseMessage()); 
     out.close(); 

现在,我想创建一个侦听到特定端口,接收从我的Java应用程序发送的HTTP POST请求WCF服务。这是可能的,有什么指导方针来做到这一点。我有点新WCF,我经历了几个WCF的例子,但我需要更多的东西和更多的相关的问题。那么,我应该使用什么样的绑定,行为......?

任何帮助将不胜感激!

回答

2

确实有可能让WCF和Java一起运行。您可能希望用C#编写并通过.NET实现的WCF部分,但Java方面非常简单。

有很多示例代码可供选择,但是这里有一个我用来获得Java-WCF项目的三部分系列。还包含CodeProject的另一个示例。

http://geekswithblogs.net/ballhaus/archive/2009/12/28/net-wcf-and-java-ws-interoperability-part1.aspx

http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide

结合和行为的东西,你就必须根据项目的需要弄清楚。有几种绑定风格,包括HTTP,TCP和其他。行为也各不相同。

下面是一个很好的单一信息来源,用于比较不同的绑定类型以及每个提供的功能和兼容性。

http://msdn.microsoft.com/en-us/library/ms730879.aspx

+0

是的,我知道Java部分。谢谢你在这个链接,我会通过他们。 – Sylca

1

考虑你是刚开始使用WCF,我建议你在WCF使用basicHttpBinding的开始,然后微调结合你学习和发现WCF的技巧。一个典型的basicHttpBinding的看起来像

<basicHttpBinding> 
     <binding name="basicClientBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:02:00" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false"> 
      <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
      <security mode="None"></security> 
     </binding> 

</basicHttpBinding> 

使用Axis可能是一个痛苦,如果在WCF使用multple绑定,甚至在的wsHttpBinding创造Java的WCF代理。你会发现很多职位,如那些低于有关使用从Java

一个复杂的行为或的wsHttpBinding

How to create java client using AXis 1.4 for consuming WCF service using wsHttpBinding

您未使用轴或其他任何东西来创建一个代理的复杂性会谈,所以这将是非常棘手为你。我建议你的情况下,开始与香草WCF服务与basicHttpBinding并没有任何行为。

同时在编写C#服务时避免使用不兼容的.Net类型,如SecureString。建议使用SecureString类型的密码。但在Java世界中没有等效的映射类型