2011-05-23 148 views
0

首先,这是我的第一篇关于堆栈溢出的文章。我一直在访问这个网站很长一段时间,从来没有真正问过一个问题,因为现有丰富的资源。我遇到的一个问题似乎有点难以找到正确的信息。如果我的帖子不合适,或者在发布之前有任何我应该考虑的事情,请告诉我。JSON和WCF Web服务

我正在为一个简单的Windows服务的WCF接口工作。这个想法是它将有两个可用的端点,一个TCP端点和一个使用JSON的HTTP端点。

我有WCF接口完成,所以我可以通过导航到正确的URL来测试它,并且一切似乎都很棒。对我来说有点困难的下一步是Java客户端的事情。我需要创建一个java类来与WCF服务接口。我可以使用URLConnection来调用GET,但是如何使用POST来解决这个问题?以下是服务合同的一个例子。

[ServiceContract] 
public interface IPenguinWCF_JSON 
{ 
    [OperationContract] 
    [WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     UriTemplate = "listsigns/")] 
    string[] ListSigns(); 

    [OperationContract] 
    [WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     UriTemplate = "stopserver/")] 
    bool StopServer(); 

    [OperationContract] 
    [WebInvoke(Method = "POST", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Wrapped, 
     UriTemplate = "sendmessage")] 
    bool SendMessage(string signName, string zone, string text, bool scroll); 

回答

0

可以使用Apache HttpClient library写一个客户端。

+0

这是否需要客户端在安装了apache的计算机上运行?如果Java模块要在另一个系统或设备上使用,例如带有IIS,没有apache或黑莓的Windows系统,那该怎么办? – thepenguinmaster 2011-05-25 14:36:50

+0

不,它不需要Apache Web服务器。名字中的“Apache”意味着它是Apache Software Foundation下的一个项目。所有需要的是JRE,以及发行版中包含的一些支持库。在Web上有许多使用HttpClient的简单教程。 – 2011-05-25 21:18:52

+0

打开连接似乎很容易。让它正常工作并获得可消费的JSON响应还有一点点。我会发布我的结果。答案只是必需的一个非常基本的部分。打开与Web服务的连接是众所周知的。技巧在于内容类型和接受请求属性。谢谢你的回答,我很欣赏你的意见。 – thepenguinmaster 2011-06-07 21:58:05