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