我有一个将数据发布到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框架以不同的方式处理这些问题,但我无法证实这一点。
答案 0 :(得分:0)
为了发布特殊字符,您可以尝试,
1)string strVar = HttpUtility.UrlEncode(json)
2)string strVar2 = Server.HtmlEncode(json)
然后编码json数据。
问题是,1st会在facebook上运行,但不会在Twitter上运行。因此,您可以尝试上述每种方法并检查它是否有效。
答案 1 :(得分:0)
不好意思保持这个发布。确定了问题,问题不在我们的最后。相反,我们发布的服务没有正确地反序列化代码,当它们看起来更深时,它被确定为他们的问题。
感谢@harshit的反馈和回答!