流媒体下载从WCF到安卓,使用Json,休息或肥皂

本文关键字:Json 使用 肥皂 下载 WCF 流媒体 | 更新日期: 2023-09-27 18:29:18

我正在开发一个wcf服务来流式传输数据文件&它的相关信息对于android客户端来说,我是WCF的新手,只是有很多阅读,很多时候都不清楚哪种方法是最好的!

考虑到这将是一个android设备调用它,我应该对该服务采用哪种格式?考虑一下我的代码以及什么可以很容易地实现,soap、json、rest或其他

任何示例都是受欢迎的,尤其是带有我在下面定义的代码的示例。谢谢

[MessageContract]
public class DownlaodStreamItem
{
    [MessageHeader]
    public Int64 ItemID { set; get; }
    [MessageHeader]
    public Int64 SizeOfFile { set; get; }
    [MessageHeader]
    public String Name { set; get; }
    [MessageBodyMember]
    public Stream Data { set; get; }
}
[MessageContract]
public class someString
{
    [MessageBodyMember]
    public string SomeString{ set; get; }
}

服务

    [OperationContract]
    DownlaodStreamItem DownloadMessagecontact(someString SomeString);

服务:IService

 public DownlaodStreamItem DownloadMessagecontact(someString SomeString)
 {
    DownlaodStreamItem DLITEM = new DownlaodStreamItem();
    // Populate & return DownlaodStreamItem ....
    return DLITEM;
 }

流媒体下载从WCF到安卓,使用Json,休息或肥皂

对于android作为客户端和.NET作为服务,最好的方法是编写WCF REST服务。因为在这种情况下,您不需要在android端创建任何代理类,只需发出Http请求就可以使用它。

您可以使用WCF REST服务模板40(CS)轻松地编写RESTWCF服务。请参考如何写。

然后,您可以在android上简单地使用以下代码来使用此REST服务。希望这对你有帮助。

try {
            String URL;
            URL = "http://localhost/MyRESTSvc/DownloadStreamItem";       
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(URL);
            InputStream inputStream = getResources().openRawResource(R.raw.task);
            // Here task is any raw file you want to keep as input.. you may ignore it.
            InputStreamEntity reqEntity = new InputStreamEntity(inputStream, -1);
            reqEntity.setContentType("binary/octet-stream");
            reqEntity.setChunked(true); // Send in multiple parts if needed
            httppost.setEntity(reqEntity);
            HttpResponse response = httpclient.execute(httppost);  
            displayAlert("Success !!");
        }
        catch (ClientProtocolException e) {                
            displayAlert(e.getMessage());
        }
        catch (IOException e) {                
            displayAlert(e.getMessage());
        }
        catch (Exception e) {                
            displayAlert(e.getMessage());
        }