我正在尝试使用c#(xml)将文档添加到索引中,但我总是收到错误400(错误请求)。我有什么想法吗?
代码:
private static string GetXml()
{
XDocument document = new XDocument(
new XDeclaration("1.0", "UTF-8", "yes"),
new XElement("add",
new XElement("doc",
new XElement("field",
new XAttribute("name", "employeeId"),
new XText("05991")),
new XElement("field",
new XAttribute("name", "skills"),
new XText("Perl"))
)
)
);
return document.ToString(SaveOptions.DisableFormatting);
}
private static void AddDocument()
{
string content = GetXml();
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://mysolrhost:8080/solr/update");
request.Method = "POST";
request.ContentType = "text/xml; charset=utf-8";
byte[] byteArray = Encoding.UTF8.GetBytes(content);
request.ContentLength = byteArray.Length;
using (var requestStream = request.GetRequestStream())
using (var sw = new StreamWriter(requestStream))
{
sw.Write(content);
}
WebResponse response = request.GetResponse();
Console.WriteLine(((HttpWebResponse) response).StatusDescription);
}
public static void Main(string[] args)
{
AddDocument();
}
编辑:问题已解决(请参阅下面的答案)。
非常感谢!
答案 0 :(得分:1)
这是一个黑暗的镜头,但在类似的情况下,我已经让服务器无法在文档的开头处理BOM(它应该,恕我直言,很好)。尝试查看是否存在问题的一种简单方法是:
byte[] byteArray = new UTF8Encoding(false).GetBytes(content);
requestStream.Write(byteArray, 0, byteArray.Length);
答案 1 :(得分:0)
啊,愚蠢的我,我忘了在架构中添加字段,这就是我得到400的原因。现在一切都好了。
非常感谢!