项目场景:
需求:我在做网络接口链接,使用的unity自带的 UnityWebRequest ,数据传输使用的json,json和自定义数据转化使用的也是unity自带的JsonUtility。使用过程中发现两个bug。
1.安全验证失败。
报错为:failed1:SSL CA certificate error
1.安全验证失败
报错为:failed1:SSL CA certificate error
和
Curl error 60: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_USER_ERROR1
解决方案:
原因可能是因为,网络连接是私人网路的原因。
using UnityEngine.Networking;
public class WebReqSkipCert : CertificateHandler
{
protected override bool ValidateCertificate(byte[] certificateData)
{
return true;
}
}
加一个这样的代码,重写CertificateHandler,跳过安全验证就行了。
HTTPRequest 不需要这样特意跳过,但是HTTPRequest 需要使用插件Best HTTP (Pro)。
2. JsonUtility.ToJson 转换为字符串失败
解决方案:
1.自定义的类需要序列化;也就是给你的自定义类 加上 [Serializable] 就行
2.变量例如 string 不能加{get;set;},否则此变量无法序列化,如图,红框里的就是无效的。
去掉{get;set;}就好了。
3.签名无效
报错为:Invalid Signature! and StringToSign: POST\n*\napplication/json;charset=utf-8\nx-ca-key:27701323\n/artemis/api/resource/v1/cameras
这意味着你填写的签名不对,改签名就行了。