WCF restful服务:如何在POST请求中发送长字符串参数?

时间:2016-08-28 13:02:10

标签: c# post wcf-rest

我在这个非常好的wcf服务中有这种方法: 的ServiceContract -

public Stream CreateTask(string token, string title, string assigneeUsername, string instructions, string taskNumber,
                        string priority, string userData)
{...}

服务类:

[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "CreateTask?t={token}")]
Stream CreateTask(string token, string title, string assigneeUsername, string instructions, string taskNumber,
                        string priority, string userData);

某些参数可能是非常长的字符串(~5000),我不希望它们成为查询字符串的一部分,也许可以将其中一些作为FormUrlEncodedContent发送。

如何将一些参数作为URL的一部分发送,将其他参数作为内容/发送到正文中? 我的操作合同可以看起来像那样吗?:

{{1}}

我的客户端代码应该如何?

1 个答案:

答案 0 :(得分:0)

在客户端只需要以json格式发送值为HttpContent:

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost/MyService/Tasks.svc/");

var url = string.Format("CreateTask?t={0}&ud={1}", token, userData);

var myObject = (dynamic)new JObject();
myObject.title = title;
myObject.assigneeUsername = assigneeUsername;
myObject.instructions = instructions;
myObject.taskNumber = taskNumber;
myObject.priority = priority;

HttpResponseMessage response = client.PostAsync(url, new StringContent(myObject.ToString(), Encoding.UTF8, "application/json")).Result;