2017-09-18 4 views
0

J'essaie de publier des données Unicode à l'aide du message de requête Http. D'une certaine façon, l'encodage du contenu cause des problèmes. Je ne définis aucun encodage explicitement dans mon code. Par exemple, j'essaie d'envoyer 'รั ค' & côté client, il est reçu comme 'ภ£ ภ± à¸'.Publication de données Unicode à l'aide de HttpClient


Exemple de code

var cookieContainer = new CookieContainer(); 
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer, }) 
using(var httpClient = new HttpClient(handler)){ 

    //set all cookies 
    foreach (var obj in configurationData["request_cookies"]) 
    { 
     var cookie = ((JProperty)(obj)); 
     cookieContainer.Add(new Uri(configurationData["request_cookie_base_url"].ToString()), 
      new Cookie(cookie.Name, HttpUtility.UrlEncode(cookie.Value.ToString()))); 
    } 

    var request = new HttpRequestMessage(); 
    request.Method = HttpMethod.Post; 
    request.RequestUri = new Uri(configurationData["form_url"].ToString()); 

    //set all request headers 
    foreach (var obj in configurationData["request_headers"]) 
    { 
     var cookie = ((JProperty) (obj)); 
     request.Headers.Add(cookie.Name, cookie.Value.ToString()); 
    } 
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); 

    //get request content data from configurationData as keyvalue pair 
    var contentValue = parsedCrmConfigurationData["form_data_template"] 
         .ToObject<Dictionary<string, string>>(); 

    request.Content = new FormUrlEncodedContent(contentValue); 

    var response = httpClient.SendAsync(request).Result; 
    response.EnsureSuccessStatusCode(); 
} 


Ai-je besoin de passer coder en particulier? si oui alors comment?
S'il vous plaît aidez-moi à comprendre le problème.

Répondre

0

vous pouvez utiliser le code ci-dessous pour encoder votre contenu

private static HttpContent getencodedContent(string jsonString) 
     { 
      var cont = new StringContent(jsonString, Encoding.UTF8, "application/json"); 
      return cont; 
     } 
+0

Je veux simuler formulaire web demande de poste en utilisant le code C#. Etes-vous sûr que je devrais utiliser le type de contenu 'application/json' au lieu de 'application/x-www-form-urlencoded'? – biker

+0

vous pouvez également utiliser l'application/x-www-form-urlencoded au lieu de l'application/json –