StringContent与FormUrlEncodedContent

时间:2014-12-17 17:30:33

标签: c# http-post

我有一个网址,我希望以data =" blahblahblah"的形式发布带有参数的主体。但是,我的" blahblahblah"在这种情况下,它是一个完整的XML,我将其简化为如下所示:

      <Parent id="1">
         <Child id="1"/>
      </Parent>

我可以通过以下方法找到HTTPClient FormUrlEncodedContent查找工具。

        var values = new List<KeyValuePair<string, string>>();
        values.Add(new KeyValuePair<string, string>("data", XMLBody));
        var content = new FormUrlEncodedContent(values);
        HttpResponseMessage sResponse = await sClient.PostAsync(action.URL, content).ConfigureAwait(false);

现在我想让它与StringContent一起使用。 基本上将xml作为参数值的一部分发送,并且该xml包含&#34; =&#34; 。下面的代码不起作用,因为我可以发布它,但服务器不能识别xml数据。我在这里做错了吗?

StringContent content = new StringContent(HttpUtility.UrlEncode(action.Body), Encoding.UTF8, "application/x-www-form-urlencoded");
HttpResponseMessage sResponse = await sClient.PostAsync(action.URL, content ).ConfigureAwait(false);

1 个答案:

答案 0 :(得分:13)

我找到了,我必须手动输入data = part。

StringContent content = new StringContent("data="+ HttpUtility.UrlEncode(action.Body), Encoding.UTF8, "application/x-www-form-urlencoded");
HttpResponseMessage sResponse = await sClient.PostAsync(action.URL, content ).ConfigureAwait(false);