使用Java.IO.InputStream作为主体输入的WCF REST服务

时间:2014-05-20 14:01:42

标签: java wcf rest inputstream

所以我正在开发一些WCF REST WebService方法。将消耗它们的应用程序对我来说是一个黑盒子,我只知道它是一个Phonegap应用程序(java)和方法定义。我也有相同的应用程序开发的等效JAVA休息服务的源代码,但是对于不同的系统。我们的想法是,许多人力资源系统可以通过实施网络服务来使用相同的应用程序。

文档说方法在请求主体中需要“application / json”,这转换为.NET中的常规String。但是,当我部署Web服务并让Phonegap-App调用此方法时,我得到了一个错误的请求。

看到已经实现并且正常工作的服务的java实现,所述方法需要 Java.Io.InputStream 作为正文中的输入:

@Override
public Response manageSubAbs(String codeEnv, String user, String password, String produit, String module, InputStream absSubFlux) 
{
//do stuff
}

除了最后一个参数之外的所有参数都是URL-Query参数,当我通过Fiddler确认时,输入流在身体中是预期的。所以,因为在.NET中没有相同的InputStream ....有没有办法可以开发WCF REST方法接受这样的输入或者我的选择是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

一般来说,在.NET中,请尝试:

[OperationContract]
        [WebInvoke(UriTemplate = "MobileUploadPhoto?JobId={jobId}&SessionId={sessionId}&Description={description}&DateTaken={dateTaken}&TypeId={typeid}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
        public string MobileUploadPhoto (String jobId, String sessionId, String description, string dateTaken, int typeid, Stream image)

或下载

[OperationContract]
        [WebGet(UriTemplate = "MobileDownloadPhotoThumbnailByFileId?SessionId={sessionId}&FileId={fileId}&JobId={jobId}",  BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
        public Stream MobileDownloadPhotoThumbnailByFileId(string sessionId, int fileId, int jobId)

我希望我能正确理解你的问题。