使用HttpClient发布unicode数据

时间:2017-09-18 09:42:48

标签: c# unicode encoding httpclient

我正在尝试使用Http请求消息发布一些unicode数据。内容编码不知何故导致一些问题。我没有在我的代码中明确设置任何编码。


例如,我正在尝试发送'รัค'&在客户端,它被收到'รัà''。


示例代码

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();
}


我需要专门传递编码吗?如果是的话怎么样?
请帮我理解这个问题。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码对内容进行编码

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