2010-06-08 11 views
8

में कोई क्वेरी चलाने के लिए POST का उपयोग कर सकते हैं। मेरे पास प्रश्न हैं कि मैं सोलर इंडेक्स के खिलाफ दौड़ रहा हूं, कभी-कभी बहुत लंबे क्वेरी पैरामीटर होते हैं, जब मैं इन प्रश्नों को चलाता हूं तो मुझे त्रुटियां मिलती हैं, जो मुझे लगता है कि एक जीईटी क्वेरी पैरामीटर की सीमा तक।क्या आप सोलर (/ select)

यहां विधि (जेएसओएन) पूछने के लिए उपयोग की जाने वाली विधि है, यह दिखाने के लिए है कि मैं एचटीपी एक्सटेंशन का उपयोग कर रहा हूं (क्लाइंट जो मैं उपयोग करता हूं वह एचटीपी क्लाइंट के लिए पतली आवरण है) अंत समाधान का अंत नहीं है। 9 0% प्रश्न ठीक चलते हैं, यह तब होता है जब परम बड़े होते हैं, मुझे हलर से 500 त्रुटि मिलती है। मैंने कहीं पढ़ा है कि आप चयन कमांड करते समय पीओएसटी का उपयोग कर सकते हैं लेकिन इसे कैसे किया जाए इसके उदाहरण नहीं मिला है। कोई मदद शानदार होगी!

public string GetJson(HttpQueryString qs) 
    { 
     using (var client = new DAC.US.Web.XmlHttpServiceClient(this.Uri)) 
     { 
      client.Client.DefaultHeaders.Authorization = new Microsoft.Http.Headers.Credential("Basic", DAC.US.Encryption.Hash.WebServiceCredintials); 
      qs.Add("wt", "json"); 

      if (!String.IsNullOrEmpty(this.Version)) 
       qs.Add("version", this.Version); 

      using (var response = client.Get(new Uri(@"select/", UriKind.Relative), qs)) 
      { 
       return response.Content.ReadAsString(); 
      } 
     } 
    } 

उत्तर

12
  1. यह मानकर न चलें। इस त्रुटि के कारण की पुष्टि करने के लिए सौर लॉग की जांच करें।
  2. /चुनिंदा मुद्दों के बिना POST अनुरोध स्वीकार करता है। आप कर्ल के साथ इस कोशिश कर सकते हैं:

    curl -d "q=*:*&rows=1" http://localhost:8983/solr/select 
    

    मैं XmlHttpServiceClient पर टिप्पणी नहीं कर सकता, क्योंकि यह कुछ स्वामित्व कोड प्रतीत हो रहा है, लेकिन HttpWebRequest का उपयोग कर पोस्ट करने का एक उदाहरण के लिए this page देखते हैं।

Btw: वहाँ .net पुस्तकालयों कि Solr, अपने खुद के रोल करने जब तक आप कुछ बहुत ही अजीब आवश्यकताओं है कोई जरूरत के साथ संवाद स्थापित लागू कर रहे हैं।

+0

: दूरस्थ सर्वर ने एक त्रुटि दी माइक्रोसॉफ्ट। एचटीपी लाइब्रेरी। मेरे पास काफी डोड आवश्यकताएं हैं, जिन्हें मुझे सोलरनेट और इस तरह कार्यान्वित करना अधिक कठिन लगता है। मुझे लगता है कि मेरा मुख्य प्रश्न यह है, POST param डेटा GET के लिए क्वेरीस्ट्रिंग जैसा दिखता है उसके बराबर है। आपके कर्ल उदाहरण से ऐसा लगता है कि पोस्ट 1 param लेता है ... – RyanFetz

+1

@RyanFetz: हाँ, POST डेटा क्वेरीस्ट्रिंग जैसा ही है। –

+0

@RyanFetz: बीटीडब्ल्यू मुझे सोलरनेट के साथ उन कठिनाइयों के बारे में सुनने में रूचि है :-) –

4

स्थापित करने के लिए सामग्री प्रकार सुनिश्चित करें: आवेदन/x-www फार्म-urlencoded या आप 500

कर्ल डिफ़ॉल्ट रूप से करता की स्थिति कोड मिल जाएगा।

यह मुझे आश्चर्य नहीं करेगा अगर आपके XmlHttpServiceClient को सामग्री प्रकार के रूप में टेक्स्ट/एक्सएमएल का उपयोग करने के लिए हार्ड-कोड/डिफॉल्ट किया गया था। HttpWebRequest अधिक उपयुक्त है।

+0

मैंने यह पता लगाने की कोशिश में काफी समय बिताया कि पोस्ट मेरे लिए क्यों काम नहीं कर रहा था। आखिरकार मैंने इसे समझ लिया, फिर अपनी प्रतिक्रिया पढ़ें। वह मुझे अन्य उत्तरों की जांच करने के लिए सिखाएगा। –

0

सोलर HTTP GET और HTTP पोस्ट का समर्थन करता है।

HTTP पोस्ट करते समय सामग्री प्रकार सही ढंग से सेट करें। आप पोस्टमैन या फिडलर का उपयोग करके इसे सत्यापित कर सकते हैं।

सही सामग्री प्रकार: सामग्री-प्रकार: एप्लिकेशन/एक्स-www-form-urlencoded।

सही सामग्री प्रकार के बिना

आप के रूप में त्रुटि संदेश प्राप्त होगा: मैं नहीं उपयोग कर रहा हूँ HttpWebRequest का उपयोग कर, तकनीकी रूप से, लेकिन के लिए एक पतली आवरण का उपयोग कर रहा (400) गलत अनुरोध