以Java.IO.InputStream作为正文输入的WCF REST服务

以Java.IO.InputStream作为正文输入的WCF REST服务,java,wcf,rest,inputstream,Java,Wcf,Rest,Inputstream,因此,我正在开发一些WCF REST Web服务方法。将使用它们的应用程序对我来说是一个黑盒,我只知道它是一个Phonegap应用程序(java)和方法定义。我还为同一个应用程序开发了等效的JavaREST服务的源代码,但用于不同的系统。其想法是,许多人力资源系统可以通过实现Web服务来使用相同的应用程序 文档中说,该方法要求在请求体中包含“application/json”,它在.NET中转换为常规字符串。然而,当我部署Web服务并让Phonegap应用程序调用此方法时,我收到了一个错误的请求

因此,我正在开发一些WCF REST Web服务方法。将使用它们的应用程序对我来说是一个黑盒,我只知道它是一个Phonegap应用程序(java)和方法定义。我还为同一个应用程序开发了等效的JavaREST服务的源代码,但用于不同的系统。其想法是,许多人力资源系统可以通过实现Web服务来使用相同的应用程序

文档中说,该方法要求在请求体中包含“application/json”,它在.NET中转换为常规字符串。然而,当我部署Web服务并让Phonegap应用程序调用此方法时,我收到了一个错误的请求

看到服务的java实现已经实现并且工作正常,所述方法期望在主体中有一个java.Io.InputStream作为输入,如下所示:

@Override
public Response manageSubAbs(String codeEnv, String user, String password, String produit, String module, InputStream absSubFlux) 
{
//do stuff
}
除了最后一个参数外,所有参数都是URL查询参数,正如我通过Fiddler确认的,Inputstream应该在主体中。所以,既然.NET中没有InputStream等价物……我有没有办法开发一个WCF REST方法来接受这样的输入,或者我有什么选择


谢谢

一般来说,在.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)

我希望我正确理解了您的问题。

是的,您确实理解正确,我尝试使用“System.IO.Stream”来表示请求正文中的“Java.IO.InputStream”变量,但我得到了一个“405:Method not allowed”,因此我假设System.IO.Stream不是解决方法。您是否曾经从传递java.IO.Inputstream的java应用程序中使用过.NET web服务?如果您使用的是JSON,则从java调用.NET wcf服务没有区别。请检查您是否正常调用服务:site.com/service.svc/MethodName,如果您尝试在浏览器中进行检查,您将获得Method not allowed消息。