我正在尝试使用以下功能执行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>\"}"
我还有别的事吗?
答案 0 :(得分:0)
如果您使用的是Framework 4.0,则可能是因为您的Web服务器验证配置设置拒绝在您的请求正文中发送xml或其他标记。如果是这样,请尝试在web.config的web部分中将RequestValidationMode更改为2.0:
<httpRuntime requestValidationMode="2.0" />
答案 1 :(得分:0)
我得到了答案, 小蠢事: “XMLData”是错误的。它应该是“XmlData”,与服务器中写入的Json参数完全相同。