。net(C#)中处理来自HttpListenerContext的请求后如何响应某些表单参数

问题描述 投票:0回答:1

我正在使用Httplistenr,该请求正在通过HttpListenerContext处理。

[以前,我只是发送不带任何内容的Ok http响应,现在我需要使用Field1 = A, Field2 = B等几个参数进行响应。

我已经将response.ContentType设置为application/x-www-form-urlencoded,但是我不知道如何将响应值添加到响应中。

我当前的方法是

  private void ProcessRequest(HttpListenerContext context)
  {        
        if (context.Request.Headers != null && context.Request.Headers.Count > 0)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append($"Request Headers {Environment.NewLine}");
            ..
        }             

        if (context.Request.InputStream != null)
        {
            using (var body = context.Request.InputStream)
            {
                var encoding = context.Request.ContentEncoding;

                using (var reader = new StreamReader(body, encoding))
                {
                    var conentRecieved  = reader.ReadToEnd();
                    ..,
                }
            }
        }

        var response = context.Response;
        response.ContentType = "application/x-www-form-urlencoded";             
        response.StatusCode = (int)HttpStatusCode.OK;
        response.StatusDescription = "OK";
        response.ContentLength64 = 0;
        response.OutputStream.Close();
        response.Close();            
}

我知道如何通过设置相应的内容类型和设置内容来发送json类型或简单文本

c# .net httplistener
1个回答
0
投票

要使用HttpListener在响应正文中发送字符串,您可以将该字符串编码为byte[],然后使用response.OutputStream.Write()content-length标头。或者只是使用System.IO.StreamWriter开始写入,然后在内部使用缓冲和content-length标头,或者使用分块传输编码。

例如:

var response = context.Response;
response.ContentType = "application/x-www-form-urlencoded";
response.StatusCode = (int)HttpStatusCode.OK;
var responseString = "MyVariableOne=ValueOne&MyVariableTwo=ValueTwo";
var responseBody = System.Text.Encoding.UTF8.GetBytes(responseString);
response.ContentLength64 = responseBody.Length;
response.OutputStream.Write(responseBody, 0, responseBody.Length);
response.Close();
© www.soinside.com 2019 - 2024. All rights reserved.