我的公司正在使用名为NIH Toolbox的ipad应用程序。它收集信息,完成后您可以通过Web服务将数据上传到Web位置。所以我在visual studio 2015中创建了一个休息网络服务,它适用于我,但不适用于NIH工具箱软件。该手册包含一个可以与其应用程序一起使用的Web服务示例,但我无法确定从哪里开始使用它们包含的代码。
要使用的示例webservice配置参考: 如果在iPad上启用了导出到Web,则此应用程序生成的所有数据将立即通过Web服务发送到用户设置的URL。 数据导出到Web功能将.csv文件发布到app用户指定的Web位置。数据导出到Web安全性以基本身份验证的形式处理。应将Web服务设置为接受基本身份验证。 Web服务实现还应该确认以json对象的形式成功传输文件。
数据上传网络服务
o表单操作:POST
o表单请求参数: 上传:可选。数据附加到此变量。
o表单响应json对象格式:
{
“error”:error_code,(错误代码为0表示成功传输文件)。 “message”:“message”(可选)
}
.NET中的Web服务实现示例(c#):
/***************** BASIC AUTHENTICATION */
if (ctx.Request.HttpMethod == "OPTIONS")
{
ctx.Response.ContentType = "text";
ctx.Response.ContentEncoding = Encoding.UTF8;
ctx.Response.AppendHeader("Content-Length", "0");
ctx.Response.AppendHeader("Connection", "keep-alive");
ctx.Response.AppendHeader("Access-Control-Allow-Origin", "*");
ctx.Response.AppendHeader("Access-Control-Allow-Headers", "Authorization, Origin, content-type, accept");
ctx.Response.AppendHeader("Access-Control-Allow-Credentials", "true");
ctx.Response.AppendHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST");
return;
}
if (ctx.Request.Headers["Authorization"] == null)
{
ctx.Response.StatusCode = 401;
ctx.Response.AppendHeader("WWW-Authenticate", "Basic");
return;
}
//validate authentication
if
(!Authenticate.ValidateRequest(ctx.Request.Headers["Authorization"].ToString()))
{
ctx.Response.StatusCode = 401;
return;
}
//save file
if (ctx.Request.HttpMethod.ToUpper() == "POST")
{
try
{
if (ctx.Request.Files.Count > 0)
{
HttpPostedFile myFile = ctx.Request.Files[0];
if (myFile != null && myFile.ContentLength > 0)
{
Stream fileContents = myFile.InputStream;
string fileName = Path.GetFileName(myFile.FileName);
string path =
Path.Combine(ctx.Server.MapPath("~/UploadedData"), fileName);
myFile.SaveAs(path);
ctx.Response.ContentType = "application/json";
ctx.Response.Write("{\"error\":\"0\"}");
return;
}
}
else
{
ctx.Response.StatusCode = 1;
return;
}
}
catch (Exception e)
{
ctx.Response.StatusCode = 1;
return;
}
}
我没有花大量时间处理这样的网络服务。如果一个好人能够把我推向正确的方向,我会非常感激。