我有Java应用程序将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();
现在,我想创建一个侦听特定端口的WCF服务,并接收从我的Java应用程序发送的HTTP POST请求。这是可能的,这是什么指导方针。我是WCF的新手,我已经通过了几个WCF示例,但我需要更多和我的问题更相关的东西。那么,我应该使用什么绑定,行为,......?
任何帮助将不胜感激!
答案 0 :(得分:2)
当然可以让WCF和Java一起运行。您可能希望在C#中编写WCF部分并通过.NET实现,但Java方面非常简单。
有很多示例代码可供选择以实现这一点,但这里有一个由三部分组成的系列我用来获得Java-WCF项目。还包括来自CodeProject的另一个示例。
http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide
你必须根据项目的要求弄清楚绑定和行为的东西。有几种绑定风格,包括HTTP,TCP和其他。行为也各不相同。
这是一个很好的单一信息来源,用于比较不同的绑定类型以及每个提供的功能和兼容性。
答案 1 :(得分: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>
如果WCF使用多个绑定甚至是wsHttpBinding,那么使用Axis在Java中创建WCF代理可能会很痛苦。你会发现许多帖子,如下面的那些,讨论使用复杂行为的复杂性或来自Java的wsHttpBinding
How to create java client using AXis 1.4 for consuming WCF service using wsHttpBinding
您没有使用Axis或其他任何东西来创建代理,因此对您来说非常棘手。我建议您在使用basicHttpBinding并且没有行为的vanilla WCF服务时开始使用。
同时编写C#服务时,请避免使用不兼容的.Net类型,如SecureString。 SecureString是密码的推荐类型。但Java世界中没有等效的映射类型