【发布时间】:2012-10-30 20:24:07
【问题描述】:
我正在使用ServiceStack 的网络服务。预期的标题是:
POST /SeizureWebService/Service.asmx/SeizureAPILogs HTTP/1.1
Host: host.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
jsonRequest=string
我正在尝试使用此代码来使用它:
public class JsonCustomClient : JsonServiceClient
{
public override string Format
{
get
{
return "x-www-form-urlencoded";
}
}
public override void SerializeToStream(ServiceStack.ServiceHost.IRequestContext requestContext, object request, System.IO.Stream stream)
{
string message = "jsonRequest=";
using (StreamWriter sw = new StreamWriter(stream, Encoding.Unicode))
{
sw.Write(message);
}
// I get an error that the stream is not writable if I use the above
base.SerializeToStream(requestContext, request, stream);
}
}
public static void JsonSS(LogsDTO logs)
{
using (var client = new JsonCustomClient())
{
var response = client.Post<LogsDTOResponse>(URI + "/SeizureAPILogs", logs);
}
}
我不知道如何在序列化 DTO 之前添加 jsonRequest=。我该怎么做?
基于神话答案的解决方案:
添加了我如何将 Mythz 的答案用于将来遇到相同问题的人 - 享受吧!
public static LogsDTOResponse JsonSS(LogsDTO logs)
{
string url = string.Format("{0}/SeizureAPILogs", URI);
string json = JsonSerializer.SerializeToString(logs);
string data = string.Format("jsonRequest={0}", json);
var response = url.PostToUrl(data, ContentType.FormUrlEncoded, null);
return response.FromJson<LogsDTOResponse>();
}
【问题讨论】:
标签: c# http-post servicestack