কীভাবে রেস্টশার্পে বডিটি অনুরোধ করতে পাঠ্য যুক্ত করতে হয়


103

আমি একটি ওয়েব পরিষেবা গ্রাস করতে রেস্টশার্প ব্যবহার করার চেষ্টা করছি। এখনও অবধি সবকিছু খুব ভালভাবে চলে গেছে (জন শিহান এবং সমস্ত অবদানকারীদের কাছে উত্সাহ!) তবে আমি একটি ছিনতাইয়ের মধ্যে পড়েছি। বলুন আমি XML এর ইতিমধ্যে সিরিয়ালযুক্ত আকারে (যেমন স্ট্রিং হিসাবে) আমার রেস্টরয়েস্টের শরীরে প্রবেশ করতে চাই। এটি করার কোন সহজ উপায় আছে? এটি প্রদর্শিত হয়। অ্যাডবডি () ফাংশনটি পর্দার পিছনে সিরিয়ালাইজেশন পরিচালনা করে, তাই আমার স্ট্রিংটি রূপান্তরিত হচ্ছে <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;
}

আপনার বর্তমান কোডটি কেমন দেখাচ্ছে? আর এতে আপনার কোথায় সমস্যা আছে?
ওডে

2
দুঃখিত, এখন অবধি এটি দেখেনি। আপনি সম্ভবত এটির জন্য অ্যাডপ্যারামিটার () চান। যদি আপনি যা চান তা না হয়, তবে আপনি যে প্যারামগুলি + এক্সএমএল অর্জন করতে চাইছেন তার একটি উদাহরণ সহ গুগল গ্রুপে পোস্ট করুন। groups.google.com/group/restsharp
জন শিহান

উত্তর:


215

অনুরোধের বডিটিতে কীভাবে সাদামাটা এক্সএমএল স্ট্রিং যুক্ত করা যায় তা এখানে:

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


34
+1 তেমনিভাবে, সরল জেএসওএন যুক্ত করতে, এটি রেকর্ড করুন A
পল প্রেওয়েট

49
আসলে, জসনের পক্ষে এটি হওয়া উচিত (কমপক্ষে রেলের জন্য): এখানেreq.AddParameter("application/json", body, ParameterType.RequestBody); টিপের জন্য জিন হোমিনালকে ধন্যবাদ
মিঃওয়াটার

1
আমি কীভাবে কেবল এইচটিএমএল এনকোডড স্ট্রিং এ সেট করতে চলেছি? অর্থাত্ একটি বৃহত্তর ভল = 2 এবং ভাল 2 = 3 ইত্যাদি পান
মাইক জেমস

4
আমি req.AddParameter ("অ্যাপ্লিকেশন / x-www-form-urlencoded", বডি, প্যারামিটারটাইপ.রেকয়েস্টবিডি) মনে করব;
ব্রায়ান রাইস

2
আমি রেস্টশার্পের সর্বশেষতম সংস্করণটি ব্যবহার করছি এবং এই পদ্ধতির স্বাক্ষর উপলভ্য নয়।
জেরহালি 18

6

@ দিমিত্রেইগের উত্তরে যোগ করতে এবং @ জারহালীর তার উত্তরের মন্তব্যে, বর্তমান সংস্করণে, এটি পোস্ট হওয়ার সময় 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
আমি এটি চেষ্টা করেছিলাম, তবে নাম প্যারামিটারে আমি যা সেট করি তা আসলে সামগ্রী-প্রকার হিসাবে সেট করা থাকে। সুতরাং কনটেন্টটাইপ এবং নাম উভয়ের জন্যই আমি "অ্যাপ্লিকেশন / জেসন" ব্যবহার করেছি।
থানগাদুরাই

আমি এটি চেষ্টা করেছি এবং বিশ্রামের মধ্যে থেকে একটি শূন্য রেফারেন্স ব্যতিক্রম পেয়েছি। এ একটি সমাধান পাওয়া stackoverflow.com/a/44281853/109736
JasonCoder

@ জেসন কোডার মন্তব্যের জন্য ধন্যবাদ। এটিও একই সংস্করণ ছিল, v105.2.3? পরবর্তী সংস্করণগুলির সাথে আমি মিশ্র ফলাফল পেয়েছি কারণ আমার জিজ্ঞাসা। এটি এখন 106 এ রয়েছে যা সম্ভবত এটি পরিচালনা করে না।
আকর্ষণীয়-নাম এখানে

@ জিব্রালটার শীর্ষে আমার ফলাফলগুলি 106.6.9 এর সাথে ছিল
জেসন কোডার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.