ServiceStack:通过POST发送JSON字符串,而不是DTO
我想发送一个字符串(JSON格式)到我的web服务,而不是使用DTO。
var client = new JsonServiceClient(absoluteUrl);
client.Post<T>(absoluteUrl, data);
但是,在将数据(DTO对象)更改为JSON字符串之后,出现ServiceStack异常:内部服务器错误。 看起来像ServiceStack Post / Send方法更改我的JSON请求。
有没有可能或有什么办法避免它? 其他人有同样的问题?
更新1:由于OAuth身份验证,我正在使用此方法。 我正在通过请求生成一个HMAC。
谢谢。
您可以使用HTTP Utils发送原始JSON,例如:
var response = absoluteUrl.PostJsonToUrl(data)
.FromJson<T>();
ServiceStack的.NET服务客户端提供了Typed API来发送Typed Request DTO,它并不意味着POST'ing原始字符串,但我刚刚添加了在此提交中发送原始string
, byte[]
和Stream
,现在您可以发送原始数据有:
var requestPath = request.ToPostUrl();
string json = request.ToJson();
var response = client.Post<GetCustomerResponse>(requestPath, json);
byte[] bytes = json.ToUtf8Bytes();
response = client.Post<GetCustomerResponse>(requestPath, bytes);
Stream ms = new MemoryStream(bytes);
response = client.Post<GetCustomerResponse>(requestPath, ms);
此更改可从v4.0.43 +获得,现已在MyGet上提供。
与HttpWebRequest共享Cookie
有不同的HttpWebRequests共享相同的“会话”你只需要使用身份验证后,共享客户饼干,例如JsonServiceClient
通过赋予它您可以与HTTP utils的饼干CookieContainer
,如:
var response = absoluteUrl.PostJsonToUrl(data,
requestFilter: req => req.CookieContainer = client.CookieContainer)
.FromJson<T>();
链接地址: http://www.djcxy.com/p/68715.html