Ich habe Abfragen, die ich gegen out solr Index ausgeführt habe, die manchmal sehr lange Abfrageparameter haben, bekomme ich Fehler, wenn ich diese Abfragen ausführen, die ich bis zum Limit eines GET-Abfrage-Parameters tun werde.
Hier ist die Methode, die ich verwende, um (JSON) abzufragen, das ist zu zeigen, dass ich die Http Extensions verwende (der Client, den ich verwende, ist ein dünner Wrapper für HttpClient), keine End-to-End-Lösung. 90% der Abfragen laufen gut, gerade wenn die Parameter groß sind, bekomme ich den 500 Fehler von solr. Ich habe irgendwo gelesen, dass Sie POSTs verwenden können, wenn Sie den Befehl select ausführen, haben aber keine Beispiele dafür gefunden. Jede Hilfe wäre fantastisch!
%Vor%/ select akzeptiert POST-Anfragen ohne Probleme. Sie können dies mit curl versuchen:
%Vor%Ich kann XmlHttpServiceClient nicht kommentieren, da es sich um proprietären Code zu handeln scheint, aber siehe diese Seite für ein Beispiel von POSTing mit HttpWebRequest.
Übrigens: Es gibt .net-Bibliotheken, die die Kommunikation mit Solr implementieren, keine Notwendigkeit, eigene zu rollen, es sei denn, Sie haben einige sehr seltsame Anforderungen.
Achten Sie darauf, Inhaltstyp: application / x-www-form-urlencoded zu setzen, sonst erhalten Sie den Statuscode 500.
Curl macht das standardmäßig.
Es würde mich nicht überraschen, wenn Ihr XmlHttpServiceClient fest codiert wäre / defaultiert, text / xml als Inhaltstyp zu verwenden. HttpWebRequest ist geeigneter.
Solr unterstützt HTTP GET und HTTP POST.
Legen Sie den Inhaltstyp beim HTTP-POST richtig fest. Sie können es mit Postman oder Fiddler überprüfen.
Korrekter Inhaltstyp: Inhaltstyp: application / x-www-form-urlencoded.
Ohne den richtigen Inhaltstyp erhalten Sie die Fehlermeldung als : Der Remote-Server hat einen Fehler zurückgegeben: (400) Ungültige Anforderung
Tags und Links .net c# solr httpclient