c# - كيفية النشر باستخدام HTTPclient نوع المحتوى=application/x-www-form-urlencoded




windows-phone-8.1 (3)

أقوم حاليًا بتطوير تطبيق wp8.1 C # ، لقد تمكنت من تنفيذ طريقة POST في json إلى api عن طريق إنشاء كائن json (bm) من textbox.texts. هنا هو رمز بلدي أدناه. كيف يمكنني أخذ textbox.text نفسه وإرساله كنوع محتوى = application / 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;

كنت أستخدم .Net Core 2.1 API مع السمة [FromBody] واضطررت إلى استخدام الحل التالي [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"));

يمكنك تعيين القيم مثل هذا وإرسالها إلى طريقة 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); 

 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




windows-phone-8.1