尝试发布包含XML的JSON数据时,Http Post失败

时间:2013-01-30 12:21:03

标签: c# json http http-post

我正在尝试使用以下功能执行http帖子。它工作正常,我的帖子数据包含普通的JSON数据(只是文本)。但现在我的json数据在其中一个字段中也包含xml。

 public string postJSON(string username, string password, string endPoint, string json)
    {
        HttpWebRequest request = CreateWebRequest(endPoint, "POST", "text/json");
        request.Credentials = new NetworkCredential(username, password);
        try
        {
            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                streamWriter.Write(json);
                streamWriter.Flush();
                streamWriter.Close();
                var httpResponse = (HttpWebResponse)request.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                    return result;
                }
            }
        }
        catch (Exception ex)
        {
            logger.WriteToLog("RequestMaker", "postJason function: " + ex.Message);
            return "error";
        }          
    }

但是当我尝试这样做时,我收到了一个错误的网址错误(400)。 我的端点URL看起来像这样: http://se.api.anpdm.com/v1/import/mailinglist/#####/demographicmapping/### 并且必须发布的示例Json代码看起来像这样。

"{\"XMLData\":\"<Subscribers><Subscriber><Name>Pedram</Name><Email>mobedi@live.com</Email><DemographicData><Demographic mapTo='Urval'>30</Demographic></DemographicData></Subscriber><Subscriber><Name>Anders Svensson</Name><Email>pmobedi@yahoo.com</Email><DemographicData><Demographic mapTo='Urval'>27</Demographic></DemographicData></Subscriber></Subscribers>\"}"

我还有别的事吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的是Framework 4.0,则可能是因为您的Web服务器验证配置设置拒绝在您的请求正文中发送xml或其他标记。如果是这样,请尝试在web.config的web部分中将RequestValidationMode更改为2.0:

    <httpRuntime requestValidationMode="2.0" />

答案 1 :(得分:0)

我得到了答案, 小蠢事: “XMLData”是错误的。它应该是“XmlData”,与服务器中写入的Json参数完全相同。