C# 服务堆栈-尝试创建POST函数并读取JSON数据
我只是想创建一个简单的POST函数,让我发布一个JSON。我试着复制一些例子,但我不确定我做的有什么不同。任何帮助都会被感激的,我觉得我错过了一些简单的东西 我想发布的内容: 邮寄地址: 标题: 内容类型:application/json 生坯: { uuid:“someUuid”, 文件名:“测试”, dateTime:“dateee”, json:“一些json” }C# 服务堆栈-尝试创建POST函数并读取JSON数据,c#,
servicestack,C#,
servicestack,我只是想创建一个简单的POST函数,让我发布一个JSON。我试着复制一些例子,但我不确定我做的有什么不同。任何帮助都会被感激的,我觉得我错过了一些简单的东西 我想发布的内容: 邮寄地址: 标题: 内容类型:application/json 生坯: { uuid:“someUuid”, 文件名:“测试”, dateTime:“dateee”, json:“一些json” } 您的SaveFileRequest请求数据需要实现irerequiresrequeststream 以下是以下文件: 直接从
您的
SaveFileRequest
请求数据需要实现irerequiresrequeststream
以下是以下文件:
直接从请求流读取
您可以添加接口直接检索流,而无需填充请求DTO,而无需注册自定义绑定器,您可以跳过请求DTO的序列化
//请求DTO
公共类RawBytes:IRequiresRequestStream
{
///
///原始Http请求输入流
///
流请求流{get;set;}
}
这会告诉ServiceStack跳过尝试反序列化请求,以便您可以自己读取原始HTTP请求正文,例如:
public object Post(RawBytes请求)
{
byte[]bytes=request.RequestStream.ReadFully();
字符串text=bytes.FromUtf8Bytes();//如果发送了文本
}
成功了谢天谢地,我一直在做这个,谢谢你!
namespace SomeNamespace.Model
{
[Route("/save/file", "POST")]
public class SaveFileRequest
{
public Stream RequestStream { get; set; }
}
public class SaveFileResponse
{
public bool Success { get; set; }
}
}
namespace SomeNamespace.ServiceInterface
{
[EnableCors(allowedMethods:"POST")]
public class SaveFileService : Service
{
public object Any(SaveFileRequest request)
{
var response = new SaveFileResponse { Success = false };
string savedataJson;
using (var reader = new StreamReader(Request.InputStream))
{
savedataJson = reader.ReadToEnd();
}
try
{
Console.WriteLine(savedataJson); // When I debug, the contents are ""
}
catch(Exception ex) {...}
}
}
}
}