c# - HttpClient का उपयोग करते समय HttpContent के अंदर बड़ी स्ट्रिंग कैसे सेट करें?




.net asp.net-web-api (2)

इसलिए, मैंने एक HttpClient बनाया है और HttpClient.PostAsync() का उपयोग कर डेटा पोस्ट कर रहा हूं।

मैं HttpContent का उपयोग कर सेट

HttpContent content = new FormUrlEncodedContent(post_parameters) ; जहां post_parameters कुंजी मान जोड़े List<KeyValuePair<string, string>> एक सूची है

समस्या यह है कि, जब HttpContent का एक बड़ा मान होता है (एक छवि को ट्रांसमीटर करने के लिए बेस 64 में कनवर्ट किया जाता है) मुझे एक यूआरएल बहुत लंबी त्रुटि मिलती है। यह समझ में आता है - यूआरएल 32,000 वर्णों से आगे नहीं जा सकता है। लेकिन अगर मैं इस तरह से डेटा को HttpContent में कैसे जोड़ूं?

कृपया मदद करे।


मैंने इसे अपने दोस्त की मदद से समझ लिया। आप क्या करना चाहते हैं FormUrlEncodedContent () का उपयोग करने से बचें, क्योंकि इसमें यूरी के आकार पर प्रतिबंध हैं। इसके बजाए, आप निम्न कार्य कर सकते हैं:

    var jsonString = JsonConvert.SerializeObject(post_parameters);
    var content = new StringContent(jsonString, Encoding.UTF8, "application/json");

यहां, हमें सर्वर पर पोस्ट करने के लिए HttpContent का उपयोग करने की आवश्यकता नहीं है, स्ट्रिंगकंटेंट को काम पूरा हो जाता है!


यह कोड मेरे लिए काम करता है, मूल रूप से आप http क्लाइंट पर स्ट्रिंग सामग्री के भीतर पोस्ट डेटा "एप्लिकेशन / एक्स-www-form-urlencoded" भेजते हैं, उम्मीद है कि यह मेरे जैसे ही समस्या वाले किसी की भी मदद कर सकता है

void sendDocument()
    {
        string url = "www.mysite.com/page.php";
        StringBuilder postData = new StringBuilder();
        postData.Append(String.Format("{0}={1}&", HttpUtility.HtmlEncode("prop"), HttpUtility.HtmlEncode("value")));
        postData.Append(String.Format("{0}={1}", HttpUtility.HtmlEncode("prop2"), HttpUtility.HtmlEncode("value2")));
        StringContent myStringContent = new StringContent(postData.ToString(), Encoding.UTF8, "application/x-www-form-urlencoded");
        HttpClient client = new HttpClient();
        HttpResponseMessage message = client.PostAsync(url, myStringContent).GetAwaiter().GetResult();
        string responseContent = message.Content.ReadAsStringAsync().GetAwaiter().GetResult();
    }






httpcontent