例としてPUTを取り上げます
Http:
private void PutTest(string url,string parame)
{
UnityWebRequest webRequest = new UnityWebRequest(url,UnityWebRequest.kHttpVerbPUT);
byte[] databyte = Encoding.UTF8.GetBytes(parame);
webRequest.uploadHandler = new UploadHandlerRaw(databyte);
webRequest.downloadHandler = new DownloadHandlerBuffer();
webRequest.timeout = 5;
webRequest.SetRequestHeader("Content-Type","text/json;charset=utf-8");
webRequest.SendWebRequest();
}
URLを「http」から「https」に直接変更した場合、
「Curlエラー51:証明書の検証に失敗しました:UNITYTLS_X509VERIFY_FLAG_NOT_TRUSTED」というエラーが発生します。証明書が指定されていないため、証明書の検証に失敗します。使用するプラットフォームはデフォルトの証明書の検証を使用するため、失敗します。
証明書は、WebRequest.certificateHandlerを設定することで指定できます。CertificateHandlerクラスのValidateCertificate関数の戻り値はfalseです。カスタムサブクラスはCertificateHandlerを継承し、ValidateCertificate関数を書き換えて、証明書を正常に検証します
public class WebRequestCertificate : CertificateHandler
{
protected override bool ValidateCertificate(byte[] certificateData)
{
//return base.ValidateCertificate(certificateData);
return true;
}
}
Https:
private void PutTest(string url,string parame)
{
UnityWebRequest webRequest = new UnityWebRequest(url,UnityWebRequest.kHttpVerbPUT);
byte[] databyte = Encoding.UTF8.GetBytes(parame);
webRequest.uploadHandler = new UploadHandlerRaw(databyte);
webRequest.downloadHandler = new DownloadHandlerBuffer();
webRequest.timeout = 5;
//拥有对CertificateHandler对象的引用,该对象可管理此UnityWebRequest的证书验证
webRequest.certificateHandler = new WebRequestCertificate();
webRequest.SetRequestHeader("Content-Type","text/json;charset=utf-8");
webRequest.SendWebRequest();
}