Как получить данные заголовка cookie с веб -страницы в Unity?

StackOverflow https://stackoverflow.com/questions/19855171

  •  29-07-2022
  •  | 
  •  

Вопрос

У меня есть страница регистрации и входа в систему в Unity3d и странице моего веб -сайта, когда я публикую свои данные регистрации или вход из Unity3d на мой веб -сайт (Magento CMS), отправляю на мою собственную ошибку «необходимые передача данных невозможны» и после просмотра моего запроса В приложении httpanalyzer я обнаружил, что Unity3d не могу принять Get Cookie String. Как получить файл cookie из Интернета после входа в систему или зарегистрировать пользователей? мой код Unity3D:

    var form = new WWWForm();
    form.AddField( "SN", SystemInfo.deviceUniqueIdentifier.ToString());
    form.AddField( "UserName ", UserName );
    form.AddField( "year",Year );
    form.AddField( "month", Month );
    form.AddField( "day", Day );
    form.AddField( "dob",Year+"/"+Month+"/"+Day );
    form.AddField( "gender", Gender );
    form.AddField( "password", Pass );
    // Create a download object
    var download = new WWW(URL, form);
    // Wait until the download is done
    yield download;
    // show the Results
    Debug.Log(download.text);   
    if(download.error != null)
    {
        Debug.Log("Err :"+download.error);
        Flag = "1"; 
    }
Это было полезно?

Решение

Обычно вы получаете «необходимые перемотки данных невозможны», когда страница, которую вы пытаетесь загрузить, делает перенаправление. Я не думаю, что вы можете сделать запрос в Unity с опцией «следить за перенаправлением».

Я не знаю Magenta CMS, поэтому не могу сказать вам, как исправить эту проблему. Для вашей проблемы с cookie это довольно просто в Unity: вам просто нужно перехватить заголовок «Set-Cookie» с первого звонка, а затем отправить заголовок с «cookie» в следующих звонках:

#pragma strict

import System.Collections.Generic;

var url:String = "";
var cookie:String = "";

/// interface
private var stringToEdit:String = "";
function OnGUI(){
    if (url!="" && GUI.Button(Rect(10,10,200,30),"Click"))
        StartCoroutine(LoadData());

    stringToEdit = GUI.TextArea (Rect (10, 50, 600, 400), stringToEdit);
}
/// debug
function Debug(s:String){
    stringToEdit += s+"\n";
}

function LoadData():IEnumerator{
    Debug(url);

    var form : WWWForm = new WWWForm();

    var time:String     = System.DateTime.Now.Ticks.ToString();
    form.AddField("time", time);

    // construct your header calls
    var headers : Hashtable = form.headers;
    if(cookie!="")
        headers["Cookie"] = cookie;

    var www : WWW = new WWW(url, form.data, headers);

    yield www;

    if(!www.error){
        Debug(www.text);

        // get the cookie and keep it
        if(www.responseHeaders.ContainsKey('SET-COOKIE')){
            var data:String[] = www.responseHeaders['SET-COOKIE'].Split(";"[0]);
            if(data.length>0){
                cookie = data[0];
            }
        }

    }else
        Debug(www.error);
    // debug
    for(var header:KeyValuePair.<String, String> in www.responseHeaders)
        Debug(header.Key+" "+header.Value);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top