我正在拿起我的同事建造的原型。不幸的是,我是C#和Web服务的总菜鸟。服务中的一种方法是:
[WebGet(UriTemplate = "GetTestData/{file}")]
public Stream GetTestData(string file)
{
string fileName =
"\\filePath" + file;
if (File.Exists(fileName))
{
FileStream stream = File.OpenRead(fileName);
if (WebOperationContext.Current != null)
{
WebOperationContext.Current.OutgoingResponse.ContentType = "text/.txt";
}
return stream;
}
return null;
}
当我从我的设备输入网址时,如
http://filepath/myFile1.txt
然后我得到myFile1.txt。她说这是一项休息服务。有没有一种简单的方法可以为此添加标题,这样我就可以立即向设备发送所有数据?
就像在设备上我可以要求
http://filePath/myFiles
并获取myFile1-myFile5.txt?现在,粗略的实现是我必须单独询问每个文件。让服务器负责发送数据包似乎更好吗?还是打破她的休息服务?谢谢!
答案 0 :(得分:1)
是否有一种简单的方法可以向此添加标题,以便我可以发送 设备所有数据一次?
我不太清楚你在这里的意思,我认为更多的背景会有所帮助。如果客户端(设备)能够接受包含多个文件的响应,这是一个常见的用例,那么其余资源可以返回多个文件。例如,您可以为:http://filePath/myFiles
实现其他资源,如下所示:
[WebGet(UriTemplate = "myFiles")]
public Stream GetAllTestData()
{
// get all files, merge into stream and return.
}
此外,在您提供的示例中,为了更加RESTful,Content-Type应该是“text / plain”而不是“text / .txt”,而不是在找不到具有404状态的WebException时返回null代码应该被提出。