在.net(C#)中处理来自HttpListenerContext的请求后如何响应某些表单参数
我正在使用一个Httplistenr,我正在通过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
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();