我正在使用BotFramework在PNG图像上绘制字符串。然后,我将其从内存中的字节数组转换为base64字符串。我将base64字符串发布到服务并获得正确的响应。一切正常,但是在此过程之后,我收到“对不起,我的机器人代码有问题”消息。
case 5:
{
try
{
...
graphics.DrawString(text, fonti, brush, drawRect, stringFormat);
using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
// I've tried changing this line to String or StringBuilder but
// nothing changed
IMAGE = $"data:image/png;base64,{Convert.ToBase64String(m.ToArray())}";
m.Close();
}
}
catch { await context.PostAsync("ERR1"); }
string json = null;
try
{
string FormStuff = string.Format($"somecontent");
StringContent content = new StringContent(
FormStuff,
Encoding.UTF8,
"application/x-www-form-urlencoded");
string url = string.Format("http://www.example.com/");
var response = await client.PostAsync(url, content);
json = (await response.Content.ReadAsStringAsync()).ToString();
}
catch { await context.PostAsync("ERR2"); }
...
}
break;
IMAGE
变量是一个字符串。
每当我删除或更改 Convert.ToBase64String()时,问题就消失了,但是我无法根据需要使用该服务,并且过程中断了。
这里唯一的问题是引发并显示给最终用户的异常。
抱歉,我的机器人代码有问题
编辑:我发现,如果我的帖子请求中的内容太长,则会收到错误消息。我尝试使用FormUrlEncodedContent
,但是它抛出了这个问题:
无效的URI:Uri字符串太长。
如何以其他方式发布?
答案 0 :(得分:0)
我不知道您正在调用什么服务,或者没有用于测试的参数的所有值。但这对于评论来说太长了。
尝试此操作,而不要Public Sub SeleniumImplementation()
Dim driver As New Selenium.WebDriver ' in older versions was SeleniumWrapper.WebDriver
'Late binding would be:
'Dim driver As Object
'Set driver = CreateObject("Selenium.WebDriver")
driver.start "chrome", "http://news.yahoo.com"
driver.open "/politics"
driver.stop
End Sub
尝试类似的操作
.ToArray()
您可能还想将此设置设置为与 var image = Convert.ToBase64String(File.ReadAllBytes("FileName"));
一起形成的字符串之外的变量。过去我曾经成功过类似的事情,但我又一次不知道您的服务在做什么或期望什么。
IMAGE