Joe*_*ore 5 c# serialization json
我有这个代码来发送一个 HTTP 请求:
public string MakeRequest(string requestUrl, object data)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);
request.ContentType = "application/json";
request.KeepAlive = false;
request.Headers.Add("Authorization", "BEARER " + apiToken);
System.Net.ServicePointManager.Expect100Continue = false;
if (data != null)
{
request.Method = "POST";
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(data);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
}
else
request.Method = "GET";
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
throw new Exception(String.Format("Server error (HTTP {0}: {1}).", response.StatusCode, response.StatusDescription));
string Charset = response.CharacterSet;
Encoding encoding = Encoding.GetEncoding(Charset);
StreamReader reader = new StreamReader(response.GetResponseStream(), encoding);
return reader.ReadToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
它适用于大多数呼叫,但POST在我收到此响应的情况下:
"?\b\0\0\0\0\0\0?V?M,.I-?/JI-R??V3<S????L?L,?L??jk[???&\0\0\0"
Run Code Online (Sandbox Code Playgroud)
当我看到 Fiddler 捕获的呼叫时,它说收到的例程:
{
"MasterOrder": {
"OrderId": "65250824"
}
}
Run Code Online (Sandbox Code Playgroud)
那么,究竟发生了什么?Fiddler 如何看到一个响应而应用程序看到另一个响应?
通过将这些行添加到以下内容解决了该问题request:
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
879 次 |
| 最近记录: |