RestSharp में शरीर का अनुरोध करने के लिए पाठ कैसे जोड़ें


103

मैं वेब सेवा का उपभोग करने के लिए RestSharp का उपयोग करने का प्रयास कर रहा हूं। अब तक सब कुछ बहुत अच्छा हो गया है (जॉन शेहान और सभी योगदानकर्ताओं के साथ खुश है!), लेकिन मैं एक रोड़ा में चला गया हूं। कहो कि मैं अपने पहले से क्रमबद्ध रूप में (यानी, एक स्ट्रिंग के रूप में) अपने रेस्ट्रोरेस्ट के शरीर में XML सम्मिलित करना चाहता हूं। क्या इसे करने का कोई आसान तरीका है? यह दिखाई देता है .AddBody () फ़ंक्शन सीरियलाइज़ेशन का संचालन करता है जो दृश्यों को बांधता है, इसलिए मेरी स्ट्रिंग को चालू किया जा रहा है <String />

कोई भी मदद बहुत ही सराहनीय होगी!

संपादित करें: मेरे वर्तमान कोड का एक नमूना अनुरोध किया गया था। निचे देखो --

private T ExecuteRequest<T>(string resource,
                            RestSharp.Method httpMethod,
                            IEnumerable<Parameter> parameters = null,
                            string body = null) where T : new()
{
    RestClient client = new RestClient(this.BaseURL);
    RestRequest req = new RestRequest(resource, httpMethod);

    // Add all parameters (and body, if applicable) to the request
    req.AddParameter("api_key", this.APIKey);
    if (parameters != null)
    {
        foreach (Parameter p in parameters) req.AddParameter(p);
    }

    if (!string.IsNullOrEmpty(body)) req.AddBody(body); // <-- ISSUE HERE

    RestResponse<T> resp = client.Execute<T>(req);
    return resp.Data;
}

आपका वर्तमान कोड कैसा दिखता है? और इसमें आपको कहां तकलीफ है?
Oded

2
क्षमा करें, अब तक यह नहीं देखा। आप शायद इसके लिए AddParameter () चाहते हैं। यदि वह नहीं है जो आप चाहते हैं, तो params + xml के साथ शरीर के एक उदाहरण के साथ Google समूह पर पोस्ट करें जिसे आप प्राप्त करने की कोशिश कर रहे हैं। group.google.com/group/restsharp
John Sheehan

जवाबों:


215

यहाँ अनुरोध शरीर के लिए सादे xml स्ट्रिंग जोड़ने के लिए है:

req.AddParameter("text/xml", body, ParameterType.RequestBody);


34
+1 इसी तरह, सादे JSON को जोड़ने के लिए, यह req.AddParameter ("टेक्स्ट / json", बॉडी, ParameterType.RequestBody) है;
पॉल प्रीवेट

49
वास्तव में, Json के लिए यह (कम से कम रेल के लिए) होना चाहिए: यहांreq.AddParameter("application/json", body, ParameterType.RequestBody); टिप के लिए जीन होमिनल का धन्यवाद
MrWater

1
मैं कैसे इसे स्थापित करने के बारे में सिर्फ एक HTML एन्कोडेड स्ट्रिंग पर जाऊंगा? यानी एक बड़ी वैल = 2 और वैल 2 = 3 आदि
माइक

4
मुझे लगता है कि req.AddParameter ("एप्लिकेशन / x-www-form-urlencoded", बॉडी, ParameterType.RequestBody) होगा;
ब्रायन राइस

2
मैं RestSharp के नवीनतम संस्करण का उपयोग कर रहा हूं, और यह विधि हस्ताक्षर उपलब्ध नहीं है।
जहाराली

6

वर्तमान संस्करण में @ dmitreyg के उत्तर और उनके उत्तर में @ jahhali की टिप्पणी जोड़ने के लिए, जब तक यह पोस्ट किया जाता है v105.2.3, तब तक वाक्य रचना इस प्रकार है:

request.Parameters.Add(new Parameter() { 
    ContentType = "application/json", 
    Name = "JSONPAYLOAD", // not required 
    Type = ParameterType.RequestBody, 
    Value = jsonBody
});

request.Parameters.Add(new Parameter() { 
    ContentType = "text/xml", 
    Name = "XMLPAYLOAD", // not required 
    Type = ParameterType.RequestBody, 
    Value = xmlBody
});

1
मैंने यह कोशिश की, लेकिन नाम पैरामीटर में मैंने जो भी सेट किया है वह वास्तव में सामग्री-प्रकार के रूप में सेट है। इसलिए ContentType और Name दोनों के लिए, मैंने "एप्लिकेशन / जसन" का उपयोग किया।
थंगादुरई

मैंने यह कोशिश की और # के भीतर से एक शून्य संदर्भ अपवाद मिला। पर एक समाधान मिला stackoverflow.com/a/44281853/109736
JasonCoder

@JasonCoder टिप्पणी के लिए धन्यवाद। क्या यह वैसा ही संस्करण था, v105.2.3? मेरे पास बाद के संस्करणों के साथ मिश्रित परिणाम हैं, यही कारण है कि मैं पूछता हूं। यह अब 106 पर है जो समान कार्य नहीं कर सकता है।
दिलचस्प-नाम-यहाँ

@GibralterTop मेरे परिणाम 106.6.9 के साथ थे
जेसनकोडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.