未授权使用天蓝色的Unity WWWForm

时间:2019-01-09 12:33:42

标签: c# forms unity3d networking request

我必须将带有图像的请求发送到带有标题“ Prediciton-Key”-> myKey的Microsoft Azure自定义视觉,并且主体应该是图像(二进制数据)。

首先,我尝试使用邮递员,并且工作正常,但是当我将其放在Unity上时,出现错误:401未经授权。

有人知道为什么吗? (我将api键作为字符串)

    WWWForm form = new WWWForm();
    form.headers.Add("Prediction-Key", "xxxxxxxxxxxxxxxxxxxxxxxx");
    form.AddBinaryData("fileUpload", texture.EncodeToPNG());

   UnityWebRequest req = UnityWebRequest.Post(link,form);

    yield return req.SendWebRequest();

1 个答案:

答案 0 :(得分:0)

docu中,他们实际上没有显示任何使用True的示例,但我想它的工作原理类似于Prediction-Key的示例,例如:

Training-Key

curl -X POST "https://southcentralus.api.cognitive.microsoft.com/customvision/v2.0/Training/projects/{projectId}/tags?name=cat" -H "Training-Key: $TRAININGKEY" --data-ascii "" 之后的标头是添加到http请求本身的标头,而不是-H中的标头字段。

我很确定您必须使用与添加授权标头(Source)相似的base64编码的字符串

form

,然后使用它req.SetRequestHeader来授权http请求本身不作为以下形式的标头:

string Base64String(string key)
{
    return System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(key));
}