如何解决最重要的多行Webhook问题
因此,我尝试从文本框中向我的api发送一条文本行,每行应发送一行新文本,当我在+=
文本框中执行parseText
时,所有3行都会出现但是,当将我的文本发送到async
任务时,它仅发送文本的最后一行,也就是第一个参数,而没有发送第二个或第一个参数……我在这里错过了什么?
我应该提到的是,当我单击按钮时会触发该事件。
编辑:
我知道我现在需要做什么,但是我很难弄清楚。我需要等待StatusCode
200或StatusCode.ToString()
等于OK才能再次开始任务。
我尝试了另一种路线,下面列出了我的第二次尝试。这次也有同样的错误,我做了4行文本,但我得到了3个Bad Requests和1 OK,这意味着第一次的3次尝试被取消了,最终的结果很好。
发现的问题:寻找解决方法
以下是它接收SenderText
的方式,因此,因为每次发送该行时它都换了一行,并且\n
的值我试图做一个.Replace("\n","")
没事
请告知第三项测试应该对所有三项进行测试
"text":" test 1
"
"text":" test 2
"
"text":" test 3 "
第一次尝试:
private async void itsmUpdate(object sender,RoutedEventArgs e)
{
string[] lines = parseText.Text.Split(new Char[] { '\n' },StringSplitOptions.RemoveEmptyEntries);
int count = lines.Length;
for (int total = count - 1; total <= count; total--)
{
Thread.Sleep(500);
if (total != 0)
{
Thread.Sleep(300);
string senderText = lines[total];
using var httpClient = new HttpClient();
var uri = "exammpleurl";
var username = "\"username\": \" @someuser \",";
var text = "\"text\":\" " + senderText + " \"";
using var request = new HttpRequestMessage(new HttpMethod("POST"),uri);
request.Content = new StringContent("{" + username + text + "}",Encoding.UTF8,"application/json");
var response = await httpClient.SendAsync(request);
}
else if (total == 0)
{
Thread.Sleep(300);
string senderText = lines[total];
using var httpClient = new HttpClient();
var uri = "exampleurl";
var username = "\"username\": \" @someuser \","application/json");
var response = await httpClient.SendAsync(request);
MessageBox.Show("Completely Parsed All Lines!");
return;
}
}
}
第二次尝试-延迟和+下面的答案已解决。我试图将多行文本框中的行发布到最松弛的webhook中。
第二次尝试:
public string SenderText { get; set; }
public async Task NumberSender()
{
using var httpClient = new HttpClient();
var uri = "example.com";
var username = "\"username\": \" @someuser \",";
var text = "\"text\":\" " + SenderText + " \"";
using var request = new HttpRequestMessage(new HttpMethod("POST"),uri);
request.Content = new StringContent("{" + username + text + "}","application/json");
var response = await httpClient.SendAsync(request);
await Task.Delay(1000);
MessageBox.Show(response.StatusCode.ToString());
}
public async void itsmUpdate(object sender,RoutedEventArgs e)
{
string[] lines = parseText.Text.Split(new Char[] { '\n' },StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
SenderText = line;
await NumberSender();
}
}
解决方法
想通了
public async void itsmUpdate(object sender,RoutedEventArgs e)
{
string[] lines = parseText.Text.Split(new Char[] { '\n' },StringSplitOptions.RemoveEmptyEntries);
foreach (string line in lines)
{
SenderText = line.TrimEnd(' ','\n','\r');
await NumberSender();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。