2016-12-27 2 views
1

Я использую следующий код, чтобы получить текст с веб-страницы:не www.text показывает полные данные в андроида

private IEnumerator FetchText() { 
     WWW www = new WWW(URL); 

     yield return www; 

     if(www.error == null) { 
      myText.text = www.text.Length.ToString(); 
     } 
     ... 
    } 

Когда я запускаю это в Unity, я получаю 185616 символов строки. Но когда я запускаю это в Android-устройстве, я получаю только 47133 символов. Это потому, что эта веб-страница ведет себя по-разному в Windows и Android? Если да, то как я могу получить тот же контент из андроида, который я получаю с настольного ПК.

Спасибо.

+0

Скорее всего, проблема заключается в том, что веб-сайт/веб-сервис обнаруживает ваш User-Agent. Они могут также использовать другие заголовки для изменения ответа. Этот код работает в редакторе? – Programmer

+0

Да, он работает в редакторе. –

+0

Можете ли вы опубликовать URL-адрес? Если да, разместите его так, как есть. – Programmer

ответ

2

Реализация ответа tier1 «s.

POST Запрос:

private IEnumerator FetchText() 
{ 
    string URL = "www.yahoo.com"; 
    string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; 

    Dictionary<string, string> headers = new Dictionary<string, string>(); 
    headers.Add("User-Agent", userAgent); 
    string postData = "test"; 
    string data = "data=" + postData; 

    WWW www = new WWW(URL, Encoding.UTF8.GetBytes(data), headers); 
    yield return www; 


    if (string.IsNullOrEmpty(www.error)) 
    { 
     //myText.text = www.text.Length.ToString(); 
     Debug.Log("Got: " + www.text); 
    } 
    else 
    { 
     Debug.Log("Error: " + www.error); 
    } 
} 

GET запрос:

Установка параметра WWWbyte[] postData обнулить сделает запрос GET.

private IEnumerator FetchText() 
{ 

    string userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; 
    string URL = "www.yahoo.com"; 

    Dictionary<string, string> headers = new Dictionary<string, string>(); 
    headers.Add("User-Agent", userAgent); 

    WWW www = new WWW(URL, null, headers); 
    yield return www; 


    if (string.IsNullOrEmpty(www.error)) 
    { 
     //myText.text = www.text.Length.ToString(); 
     Debug.Log("Got: " + www.text); 
    } 
    else 
    { 
     Debug.Log("Error: " + www.error); 
    } 
} 

Согласно исходному коду, вам нужен метод запроса GET. Это будет маскироваться как запрос из браузера Chrome. Вы можете получить User-Agent от here.

+0

Я попробую сейчас и дам вам знать. –

+1

Спасибо, это сработало :) –

+0

Думаю, вы могли бы мне помочь с этим: http: // stackoverflow.ком/вопросы/41885413/экстракт-байтовые-массивы-оф-отдельных рам-из-байт-массив из-а-GIF-файл –

2

Возможно, URL-адрес, который вы пытаетесь найти, - это обнаружение вашего пользовательского агента и отправка на какой-либо мобильный сайт с меньшим корпусом ответа.

Я не очень хорошо знаком с библиотекой, которую вы используете, но вы можете попробовать вручную настроить заголовок User-Agent.

Например:

User-Agent: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; с.в.: 11,0), как Gecko

+0

Я попробую это и вернусь к вам. –

Смежные вопросы