كيف يمكن الحصول على بيانات رأس ملف تعريف الارتباط من صفحة الويب في الوحدة؟

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

  •  29-07-2022
  •  | 
  •  

سؤال

لدي صفحة تسجيل وتسجيل تسجيل الدخول في Unity3D وصفحة موقع الويب الخاص بي ، عندما أقوم بنشر بيانات التسجيل أو تسجيل الدخول من Unity3D إلى موقع الويب الخاص بي (Magento CMS) ، أرسل إلى خطأي الخاص "لم يكن ذلك ممكنًا للبيانات الضرورية" وبعد رؤية طلبي في تطبيق httpanalyzer ، اكتشف Unity3d غير قادر على قبول Get Cookie String. كيف يمكن الحصول على ملف تعريف الارتباط من الويب بعد تسجيل الدخول أو تسجيل المستخدمين؟ رمز 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"; 
    }
هل كانت مفيدة؟

المحلول

عادةً ما تحصل على "لا يمكن إرجاع البيانات اللازمة" عندما تحاول تحميل الصفحة التي تقوم بإعادة توجيه. لا أعتقد أنه يمكنك تقديم طلب في الوحدة مع خيار "متابعة إعادة التوجيه".

لا أعرف Magenta CMS ، لذا لا يمكنني إخبارك بكيفية تصحيح هذه المشكلة. لمشكلتك في ملف تعريف الارتباط ، هذا بسيط جدًا في الوحدة: عليك فقط اعتراض رأس "Set-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