HttpRequest某些特殊字符编码不正确

时间:2013-12-09 10:18:15

标签: c# json asp.net-web-api

我有一个将数据发布到Web服务的Windows服务。它根据数据发送PUT或POST请求。我面临的问题是,虽然在PUT请求中正确发送了一些特殊字符,但它们在POST请求中没有正确发送。

这是我的代码。

protected void InitializeRequest(String url, String method)
        {
            _Request = (HttpWebRequest)WebRequest.Create(new Uri(url));
            _Request.Method = method;
            _Request.Accept = Settings.AcceptHeader;
            _Request.Headers.Add("Authorization", Settings.AuthorizationHeader);
        }


public void SendData(String json)
{

byte[] byteArray = Encoding.UTF8.GetBytes(json);

                _Request.ContentType = "application/json";

                _Request.ContentLength = byteArray.Length;

                try
                {
                    Stream dataStream = _Request.GetRequestStream();
                    dataStream.Write(byteArray, 0, byteArray.Length);
                    dataStream.Close();

                    var response = (HttpWebResponse)_Request.GetResponse();
                    bierResponse = ParseResponse(response);
                    response.Close();
                }
}

正如您所看到的,我对POST和PUT使用相同的方法,唯一的区别是InitializeRequest方法以不同方式设置_Request.Method属性。

我想发布的数据包含这个字符串æøåÆØÅ,它可以正确传输PUT请求但在POST时搞砸了。

我的直觉是.Net框架以不同的方式处理这些问题,但我无法证实这一点。

2 个答案:

答案 0 :(得分:0)

为了发布特殊字符,您可以尝试,

1)string strVar = HttpUtility.UrlEncode(json)

2)string strVar2 = Server.HtmlEncode(json)

然后编码json数据。

问题是,1st会在facebook上运行,但不会在Twitter上运行。因此,您可以尝试上述每种方法并检查它是否有效。

答案 1 :(得分:0)

不好意思保持这个发布。确定了问题,问题不在我们的最后。相反,我们发布的服务没有正确地反序列化代码,当它们看起来更深时,它被确定为他们的问题。

感谢@harshit的反馈和回答!