#c# #http #httprequest
#c# #http #httprequest
Вопрос:
Я пытаюсь переслать http-запрос, который я получаю, на другой веб-сайт, поэтому вот как я получаю данные
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://localhost:3294/discord/");
listener.Start();
while (true)
{
Console.WriteLine("Listening...");
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
//here is want to send data to https://www.discord.com/api/webhooks/#################/###########
}
для отправки данных я использую HttpClient.PostAsync(string requestUri, HttpContent content)
, но я не могу отправить context.Request
как HttpContent
🙁
Надеюсь, я дал достаточно информации.
Комментарии:
1. Не помещайте отправку в цикл While. Какую ошибку вы получаете? Протестируйте неудачную строку кода самостоятельно и приступайте к работе, прежде чем пытаться вместе со слушателем.
2. @jdweng ошибки нет, я получаю данные, но пытаюсь отправить их на другой веб-сайт, как я могу это сделать?
3. Данные находятся либо в теле, либо во вложении. Похоже, вы пытаетесь использовать body. чтобы создать новый запрос (вы используете lIstnerRequest, что неверно); вам нужен post и задайте контекстную длину тела.
4. не могли бы вы прислать мне ссылку на учебник?
Ответ №1:
Код будет выглядеть примерно так:
HttpListener listener = new HttpListener();
listener.Prefixes.Add("http://localhost:3294/discord/");
listener.Start();
Console.WriteLine("Listening...");
HttpListenerContext context = listener.GetContext();
Stream body = context.Request.InputStream;
Encoding encoding = context.Request.ContentEncoding;
byte[] buffer = new byte[body.Length];
body.Read(buffer,0,(int)body.Length);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("https://www.discord.com/api/webhooks/#################/###########");
request.Method = "POST";
request.ContentType = context.Response.ContentType;
body.Position = 0;
request.ContentLength = body.Length;
Stream newStream = request.GetRequestStream();
newStream.Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Комментарии:
1.
System.NotSupportedException: 'This stream does not support seek operations.
сbyte[] buffer = new byte[body.Length];
чем это связано?2. исключение не имеет смысла в строке, которую вы опубликовали. Я добавил одну строку кода: body . Позиция = 0; I возможно, тело не содержит данных.
3. спасибо за помощь, я постараюсь выяснить причину этой ошибки 🙂