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

在.net(C#)中处理来自HttpListenerContext的请求后如何响应某些表单参数,c#,.net,httplistener,C#,.net,Httplistener,我正在使用一个Httplistenr,我正在通过HttpListenerContext处理该请求 以前我只是发送一个没有任何内容的Okhttp响应,现在我需要用一些参数来响应,比如Field1=a,Field2=B 我已将response.ContentType设置为application/x-www-form-urlencoded,但我不知道如何将响应值添加到响应中 我目前的方法是 private void ProcessRequest(HttpListenerContext contex

我正在使用一个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类型或简单文本。要使用HttpListener在响应正文中发送字符串,您可以将字符串编码为
字节[]
,然后使用
响应.OutputStream.Write()
内容长度
头。或者使用
System.IO.StreamWriter
开始写入,它将在内部使用缓冲和
内容长度
头,或者使用分块传输编码

例如:


服务器通常从不形成编码或url编码。请改用JSON。@DavidBrowne Microsoft我在这里没有实现我自己的标准。有一个第三方api调用后台windows服务中运行的my callback wich。在处理后的回调中,我必须根据所需数据进行响应。用这两个字段。他们基本上是在我们的回调上发送一个get请求,并在头中包含一些可能的数据。我只是问如何添加参数。对另一个问题的回答清楚地解释了这一点。这就是为什么这个问题是重复的。我使用的是在后台服务下运行的HttpListener,请告诉我在HttpListener响应中设置了一些内容的行吗?这是一个纯粹的C#object用法问题,而这个问题主要是使用哪种coent类型。第三方强迫我以formdata/formurlencoded参数进行响应
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();