Unity не загружает сборку System.Net.Http script [duplicate]

Это будет мой обновленный подход :

def merge(data):
    sets = (set(e) for e in data if e)
    results = [next(sets)]
    for e_set in sets:
        to_update = []
        for i,res in enumerate(results):
            if not e_set.isdisjoint(res):
                to_update.insert(0,i)

        if not to_update:
            results.append(e_set)
        else:
            last = results[to_update.pop(-1)]
            for i in to_update:
                last |= results[i]
                del results[i]
            last |= e_set

    return results

Примечание: во время слияния пустые списки будут удалены.

Обновление: Надежность.

Вам нужно два теста для 100% надежности успеха:

  • Убедитесь, что все результирующие множества взаимно разделены:
    merged = [{0, 1, 3, 4, 5, 10, 11, 16}, {8, 2}, {8}]
    
    from itertools import combinations
    for a,b in combinations(merged,2):
        if not a.isdisjoint(b):
            raise Exception(a,b)    # just an example
    
  • Убедитесь, что объединенный набор охватывает исходные данные. (как было предложено katrielalex)

Я думаю, что это займет некоторое время, но, возможно, это будет стоить того, если вы хотите быть на 100% уверенным.

3
задан ASPuma 28 July 2016 в 19:38
поделиться

1 ответ

HttpClient доступен только в версии 4.5 NET и выше, а Unity не использует эту версию. Unity использует версию 3.5 .NET.

Если вы используете Unity 5.3, UnityWebRequest.Delete можно использовать для создания запроса на удаление. Его можно найти в пространстве имен Experimental.Networking. Если вы используете Unity 5.4 и выше, UnityWebRequest можно найти в пространстве имен UnityEngine.Networking;.

Полный рабочий пример:

IEnumerator makeRequest(string url)
{
    UnityWebRequest delReq = UnityWebRequest.Delete(url);
    yield return delReq.Send();

    if (delReq.isError)
    {
        Debug.Log("Error: " + delReq.error);
    }
    else
    {
        Debug.Log("Received " + delReq.downloadHandler.text);
    }
}

Использование:

StartCoroutine(makeRequest("http://www.example.com/whatever"));

Обязательно включите using UnityEngine.Networking. Вы можете найти здесь полные примеры здесь .


EDIT (UPDATE)

Unity теперь поддерживает .NET 4.5, поэтому теперь вы можете использовать HttpClient, если ты хочешь. См. этот пост о том, как его включить.

После включения его, перейдите к <UnityInstallationDirectory>\Editor\Data\MonoBleedingEdge\lib\mono\4.5 или, например, C:\Program Files\Unity\Editor\Data\MonoBleedingEdge\lib\mono\4.5 на моем компьютере.

В этом каталоге скопируйте System.Net.Http.dll в каталог <ProjectName>\Assets и вы сможете использовать HttpClient после импорта пространства имен System.Net.Http. Если есть некоторая другая ошибка в отношении отсутствующих зависимостей, вы также можете получить DLL с этого пути и скопировать их в каталог <ProjectName>\Assets.

5
ответ дан Programmer 15 August 2018 в 19:14
поделиться
  • 1
    Привет @Programmer, ответьте на его вопрос, на какой мой подход он нацелился, я стрелял по некоторым стрелкам там, но добирался до этого момента, тем не менее, после того, как ваш код работал, я получаю код ошибки 401L на delReq после отправки, неавторизованный ошибка? whit класс WWW передаю словарь с заголовками авторизации для входа в систему, как мне это достичь? – ASPuma 29 July 2016 в 15:34
  • 2
    @ASPuma Вы используете delReq.SetRequestHeader("Your Header", "Your value");. Дайте мне знать, если это решит вашу проблему. – Programmer 29 July 2016 в 15:39
  • 3
    Это все, что нужно @Programmer какой-то авторизации, спасибо за вашу помощь, мое уважение! – ASPuma 29 July 2016 в 15:53
  • 4
    Добро пожаловать. Рад, что я смог помочь. – Programmer 29 July 2016 в 15:55
  • 5
    @SimonHeinen Я отредактировал свой ответ, чтобы включить, как использовать HttpClient в последней версии Unity. Удостоверьтесь, чтобы удалить, что когда-либо делал это, я так и говорил. – Programmer 24 July 2018 в 22:27
Другие вопросы по тегам:

Похожие вопросы: