Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复';收到的消息意外或格式错误';_C#_.net_Ssl_Httpclient_Discord.net - Fatal编程技术网

C# 如何修复';收到的消息意外或格式错误';

C# 如何修复';收到的消息意外或格式错误';,c#,.net,ssl,httpclient,discord.net,C#,.net,Ssl,Httpclient,Discord.net,我试图解决这个问题已经有一段时间了,但我所尝试的一切都是无用的。我尝试了HttpClientHandler,但仍然得到了错误 错误消息: 无法建立SSL连接,请参阅内部异常 身份验证失败,请参阅内部异常 收到的消息意外或格式不正确 [命令(“统计”)] 公共异步任务配置文件OSU([剩余]字符串用户名=null) { 尝试 { clientHandler.ServerCertificateCostomValidationCallback=(发送方、证书、链、sslPolicyErrors)=>{

我试图解决这个问题已经有一段时间了,但我所尝试的一切都是无用的。我尝试了HttpClientHandler,但仍然得到了错误

错误消息:

无法建立SSL连接,请参阅内部异常

身份验证失败,请参阅内部异常

收到的消息意外或格式不正确

[命令(“统计”)]
公共异步任务配置文件OSU([剩余]字符串用户名=null)
{
尝试
{
clientHandler.ServerCertificateCostomValidationCallback=(发送方、证书、链、sslPolicyErrors)=>{return true;};
HttpClient客户端=新的HttpClient(clientHandler,disposeHandler:true);
列表播放器=新列表();
List lines=File.ReadAllLines(路径,编码:encoding.UTF8).ToList();
字符串id=“”;
foreach(行中的var行)
{
string[]readed=line.Split(“,”);
Player newPlayer=新玩家();
newPlayer.id=已读取[0];
newPlayer.osuname=readed[1];
player.Add(newPlayer);
}
如果(用户名为空)
{
id=Context.User.id.ToString();
用户名=Context.User.username;
}
else if(Context.Message.inventiedUsers.Count>0)
{
username=Context.Message.inventiedUsers.First().username;
id=Context.Message.indicatedUsers.First().id.ToString();
}
对于(int i=0;i

我从零开始学习c#语言,而且我是该语言的初学者,因此请解释问题所在。

这很可能是由于您定义和使用的
clientHandler
造成的

对于与OSU API的通信,您也不会真正需要它。 因此,您可以继续,让
HttpClient
为您处理这个问题

因此,不是:

clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; };

HttpClient client = new HttpClient(clientHandler,disposeHandler: true);
您可以如下定义
HttpClient

HttpClient client = new HttpClient();
由于您现在不再定义disposeHandler,因此最好在try-catch中添加一个

或者使用
应用到
HttpClient

using (var client = new HttpClient())
{
    string url = $"https://osu.ppy.sh/api/get_user?k={Key}&u=d3ullist";
    string osuProf = await client.GetStringAsync(url);
    dynamic osuProfile = JsonConvert.DeserializeObject<dynamic>(value: osuProf);
}
使用(var-client=new-HttpClient())
{
字符串url=$”https://osu.ppy.sh/api/get_user?k={Key}&u=d3ullist”;
string osuProf=await client.GetStringAsync(url);
动态osuProfile=JsonConvert.DeserializeObject(值:osuProf);
}
这将以动态对象结束,正如您之前所期望的那样


错误发生在哪一行?Tbh我不知道我想它发生在字符串osuProf=WAIT client.GetStringAsync(url)上;行,因为我在其他命令上也使用了该命令,并且完整的错误消息没有给您一个行号吗?不,它没有给我行号@Citrom您确定使用了正确的
键吗?是的,我使用了正确的键,但奇怪的是,这个错误没有一致性,因为大多数情况下,它工作正常,但50次中有1次是随机的SSL错误,之后它工作正常,就像什么都没发生一样。听起来,它更可能是你的互联网问题,或者它的相关配置,如防火墙,超出利率限制之类的。这就是我害怕的!无论如何,谢谢你的帮助!我试着找出是什么原因造成的
using (var client = new HttpClient())
{
    string url = $"https://osu.ppy.sh/api/get_user?k={Key}&u=d3ullist";
    string osuProf = await client.GetStringAsync(url);
    dynamic osuProfile = JsonConvert.DeserializeObject<dynamic>(value: osuProf);
}