2 Stimmen

Wie sendet man komprimierte Daten in asp.net

Ich habe eine ASP.net-Anwendung mit mehreren aspx erstellt. Einige von ihnen werden wie ein API-Link verwendet. Diese API-Seiten werden von der J2ME-Anwendung verwendet, die einige Header übergibt. Ich überprüfe diese Header speziell "Accept-Encoding", damit meine Seite komprimierte Inhalte senden kann.

Der folgende Code zeigt einen Beispielcode von einer dieser API-Seiten.

byte[] buffer;
    int bufferLength;

    protected void Page_Load(object sender, EventArgs e)
    {
        bufferLength = Request.ContentLength;
        buffer = new byte[bufferLength];
        buffer = Request.BinaryRead(bufferLength);
        string s = Encoding.ASCII.GetString(buffer);

        bool needEncrypted = (Request.Headers["Accept-Encoding"] != null);

        if (!string.IsNullOrEmpty(s))
        {
            JavaScriptSerializer ser = new JavaScriptSerializer();
            CRequestQuestParameter QuestPara = ser.Deserialize<CRequestQuestParameter>(s);
            CUtil utilFun = new CUtil(WebConfigurationManager.ConnectionStrings["TheConnectionString"].ToString());

            CResponseQuestionSets res = new CResponseQuestionSets();

            //No error setting
            res.ErrorCode = -1;
            res.ErrorMessage = "";
            res.IsError = false;

            //Return data
            res.ResponseData = utilFun.GetQuestionSet(QuestPara);
            if (res.ResponseData != null) {
                res.ErrorCode = -1;
                res.ErrorMessage = "";
                res.IsError = false;

            }
            else
            {
                res.ErrorCode = 102;
                res.ErrorMessage = "User does not exists";
                res.IsError = true;

            }

            if (needEncrypted)
            {
                HttpContext context = HttpContext.Current;
                context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
                HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
            }

            Response.ContentType = "application/json charset=utf-8";
            Response.Write(ser.Serialize(res));
            Response.End();

        }
    }

Das Problem dabei ist, dass die J2ME-Anwendung die Daten nicht komprimiert empfängt, sondern den Header "Content-Encoding" erhält.

Kann mir jemand helfen, dieses Problem zu lösen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X