HTTPclient সামগ্রী প্রকার = প্রয়োগ / x-www-form-urlencoded ব্যবহার করে কীভাবে পোস্ট করা যায়


105

আমি বর্তমানে একটি ডাব্লুপি ৮.১ অ্যাপ্লিকেশন সি # বিকাশ করছি, আমি টেক্সটবক্স.টেক্সটস থেকে একটি জেসন অবজেক্ট (বিএম) তৈরি করে আমার এপিটিতে জেসনসে একটি পোষ্ট পদ্ধতি সম্পাদন করতে সক্ষম হয়েছি। নীচে আমার কোড এখানে। আমি কীভাবে একই টেক্সটবক্স.টেক্সটকে নেব এবং সেগুলি একটি সামগ্রীর প্রকার হিসাবে = অ্যাপ্লিকেশন / x-www-form-urlencoded হিসাবে পোষ্ট করব। তার জন্য কোড কী?

            Profile bm = new Profile();
            bm.first_name = Names.Text;
            bm.surname = surname.Text;

            string json = JsonConvert.SerializeObject(bm);

            MessageDialog messageDialog = new MessageDialog(json);//Text should not be empty 
            await messageDialog.ShowAsync();

            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json");

            byte[] messageBytes = Encoding.UTF8.GetBytes(json);
            var content = new ByteArrayContent(messageBytes);
            content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
            var response = client.PostAsync("myapiurl", content).Result;

উত্তর:


179
var nvc = new List<KeyValuePair<string, string>>();
nvc.Add(new KeyValuePair<string, string>("Input1", "TEST2"));
nvc.Add(new KeyValuePair<string, string>("Input2", "TEST2"));
var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(nvc) };
var res = await client.SendAsync(req);

বা

var dict = new Dictionary<string, string>();
dict.Add("Input1", "TEST2");
dict.Add("Input2", "TEST2");
var client = new HttpClient();
var req = new HttpRequestMessage(HttpMethod.Post, url) { Content = new FormUrlEncodedContent(dict) };
var res = await client.SendAsync(req);

13
এছাড়াও আপনি প্রস্ততকর্তার একটি অভিধান পাস করতে পারেন FormUrlEncodedContent, যেহেতু অভিধান একটি হল IEnumerableএর KeyValuePairগুলি।
স্যাম মাগুরা 13

ব্যবহার অপেক্ষায় রয়েছেন টাস্ক পদ্ধতিতে?
কিকিনেট

4
@ কিকিনেট হ্যাঁ, "অ্যাসিঙ্ক টাস্ক <টি>" পদ্ধতিতে
রাভিটাস ক্রুংকায়ে

18
 var params= new Dictionary<string, string>();
 var url ="Please enter URLhere"; 
 params.Add("key1", "value1");
 params.Add("key2", "value2");

 using (HttpClient client = new HttpClient())
  {
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = client.PostAsync(url, new FormUrlEncodedContent(dict)).Result;
              var tokne= response.Content.ReadAsStringAsync().Result;
}

//Get response as expected

5

আমার জন্য সেরা সমাধানটি হ'ল:

// Add key/value
var dict = new Dictionary<string, string>();
dict.Add("Content-Type", "application/x-www-form-urlencoded");

// Execute post method
using (var response = httpClient.PostAsync(path, new FormUrlEncodedContent(dict))){}

2

আপনি মানগুলি এটির মতো সেট করে PostAsyncপদ্ধতিতে প্রেরণ করতে পারেন :

var apiClient = new HttpClient();
var values = new Dictionary<object, object>
{
    {"key1", val1},
    {"key2", "val2"}
};

var content = new StringContent(JsonConvert.SerializeObject(values), Encoding.UTF8, "application/json");
var response = await apiClient.PostAsync("YOUR_API_ADDRESS", content);

4
প্রশ্নে থাকা এপিআই অনুমতি দেয় নাapplication/json
ফাওয়াদ রাজা

-1

বৈশিষ্ট্য সহ আমি একটি নেট কোর ২.১ এপিআই [FromBody]ব্যবহার করছিলাম এবং এটিতে সফলভাবে পোস্ট করার জন্য আমাকে নিম্নলিখিত সমাধানটি ব্যবহার করতে হয়েছিল:

_apiClient =  new HttpClient();
_apiClient.BaseAddress = new Uri(<YOUR API>);
var MyObject myObject = new MyObject(){
    FirstName = "Me",
    LastName = "Myself"
};

var stringified = JsonConvert.SerializeObject(myObject);
var result = await _apiClient.PostAsync("api/appusers", new StringContent(stringified, Encoding.UTF8, "application/json"));
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.