HttpWebRequest
개체에 gzip 압축을 사용하여 콘텐츠 인코딩 및 수락 인코딩을 헤더에 추가해야합니다. 수락 - 인코딩 설정은 다음 줄을 추가하여 수행합니다 : request.AutomaticDecompression = DecompressionMethods.GZip;
괜찮습니다. 그러나,이 라인 request.Headers.Add(HttpRequestHeader.ContentEncoding, "gzip");
으로 Content-Encoding (정확히 완료되었는지는 확실하지 않음)을 설정 한 후에 404 오류가 발생합니다. 내 요청 코드는 다음과 같습니다.요청 헤더로 Content-Encoding을 추가 한 후 404 오류가 발생했습니다.
XmlDocument RequestAndResponseHelper(string requestStr, string directory)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(directory);
var data = Encoding.ASCII.GetBytes(requestStr);
request.Method = "POST";
request.ContentLength = data.Length;
request.ContentType = "text/xml";
request.Headers.Add("userName", UserName);
request.Headers.Add("password", Password);
request.AutomaticDecompression = DecompressionMethods.GZip; //this adds 'Accept-Encoding: gzip' as request header
request.Headers.Add(HttpRequestHeader.ContentEncoding, "gzip"); //this adds 'Content-Encoding: gzip' as request header
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
var response = (HttpWebResponse)request.GetResponse();
string responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
XmlDocument rs = new XmlDocument();
rs.LoadXml(responseString);
return rs;
}
오류로 인해 처리하도록 도와 주시면 감사하겠습니다.
또한 여기 내 압축 코드가 있습니다. 아마도 압축 된 것이있을 수 있습니다.
String Compress(String requestStr)
{
byte[] buffer = Encoding.UTF8.GetBytes(requestStr);
MemoryStream ms = new MemoryStream();
using (GZipStream zip = new GZipStream(ms, CompressionMode.Compress, true))
{ zip.Write(buffer, 0, buffer.Length); }
ms.Position = 0;
MemoryStream outStream = new MemoryStream();
byte[] compressed = new byte[ms.Length];
ms.Read(compressed, 0, compressed.Length);
byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
return Convert.ToBase64String(gzBuffer);
}
답장을 보내 주셔서 감사합니다. 그러나 요청 uri가 잘못 되었다면'request.Headers.Add (HttpRequestHeader.ContentEncoding, gzip "); ' –