当我们遇到这个报错时,1、由于在访问https的时候使用了不恰当的访问方式导致的,当使用www请求的就会出现此报错,这时,我们需要将www修改成其他请求方式如:HttpWebRequest请求;2、是由于证书原因导致的,我们可以使用正确的证书进行验证,或者直接忽略证书(我选择忽略)。下面是两种请求的事例:
string url = "你的url地址";
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))//这里是判断你的地址是https还是http
{
HttpWebRequest request = null;
//CheckValidationResult是重写ServerCertificateValidationCallback ,用于忽略证书验证,通过所有的证书
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
//进行httpwebrequest请求逻辑
request = WebRequest.Create(url) as HttpWebRequest;
request.ProtocolVersion = HttpVersion.Version11;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream getStream = response.GetResponseStream();
StreamReader streamreader = new StreamReader(getStream);
String result = streamreader.ReadToEnd();
var tab = (Hashtable)MiniJSON.jsonDecode(result);
LoadPrint("请求回来的数据:" + result);
if (tab["result"].ToString() == "ok")
{
LoadPrint("成功");
break;
}
else if (tab["result"].ToString() == "error")
{
break;
}
}
else{
//当不是https,我们就可以使用www请求,同样也可以使用HttpWebRequest请求,都是可以的,www需要放到携程中
WWW www = new WWW(url);
yield return www;
if (string.IsNullOrEmpty(www.error))
{
errorMessage = "成功";
var tab = (Hashtable)MiniJSON.jsonDecode(www.text);
if (tab["result"].ToString() == "ok")
{
LoadPrint("成功");
yield break;
}
else if (tab["result"].ToString() == "error")
{
yield break;
}
else
{
// 正常情况下不会走到这里.
}
}
网友评论