这里,Solr删除命令(URL)面临非常奇怪的问题 命令:
http://12.345.678.910:8983/solr/mycore/update?commit=true&stream.body=<delete><id>434908</id></delete>&wt=json
http://12.345.678.910:8983/solr/mycore/update?commit=true&stream.body=%3Cdelete%3E%3Cid%3E434908%3C/id%3E%3C/delete%3E&wt=json
这非常简单,可以在任何浏览器中使用。 (第二个是浏览器发出的实际浏览器请求),但是当我使用C#HttpWebRequest调用相同的请求时,它们都不起作用,并且返回400-错误的请求错误。
我的代码如下:
private bool InvokeSolrCommand(string solrCommand)
{
try
{
//return true;
string _response = string.Empty;
HttpWebResponse objWebResponse;
StreamReader srResponse;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(solrCommand);
objRequest.ContentType = "text/xml";
objRequest.Accept = "text/html,application/xhtml+xml,application/xml";
objRequest.Method = "GET";
objRequest.KeepAlive = true;
objRequest.UserAgent = "TEST";
//objRequest.ContentLength = 0;
objRequest.KeepAlive = true;
objRequest.Timeout = 20000;
objWebResponse = (HttpWebResponse)objRequest.GetResponse();
if (objWebResponse.StatusCode == HttpStatusCode.OK)
{
srResponse = new StreamReader(objWebResponse.GetResponseStream(), Encoding.UTF8);
_response = srResponse.ReadToEnd();
return true;
}
else
{
Logger.LogError("InvokeSolrCommand()::Improper response from Solr (" + solrCommand + ")::Status Code=" + objWebResponse.StatusCode + "," + objWebResponse.StatusDescription + ". Retrying..");
return false;
}
}
catch (WebException webEx)
{
//400 is handled here...
}
}
我在Solr日志中观察到-发生以下异常:
ERROR true
RequestHandlerBase
org.apache.solr.common.SolrException: Unexpected EOF in prolog
org.apache.solr.common.SolrException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
at org.apache.solr.handler.loader.XMLLoader.load(XMLLoader.java:190)
at org.apache.solr.handler.UpdateRequestHandler$1.load(UpdateRequestHandler.java:97)
at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:68)
at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:177)
你知道这里发生了什么吗? C#中还有其他方法可以调用此网址吗?