2016-06-21 6 views
0

Я использую образец кода с сайта Unity для WWW-класса, чтобы сделать запрос API, но текстовым ответом является мусор. Это похоже на . Когда я регистрирую заголовки ответов, я получаю ответ 200, и все выглядит нормально, за исключением того, что CONTENT-TYPE - image/jpeg. Я попробовал несколько различных случайных файлов .json, чтобы проверить это, и все они возвращают то же самое. Запрос изображения, используемого в качестве текстуры, работает.Unity WWW Текст ответ искажен

public class SpeechReq : MonoBehaviour { 
//public string url = "https://gist.githubusercontent.com/wethecode/1f79baf168680afb0f2d/raw/755f9fb71dcc34df811b4bc26448d88a0f97f34d/snippets.json"; 
public string url = "https://gist.githubusercontent.com/damienh/fea91ab710475d499a09/raw/893065428badd8bfdc7b39fe17675b8aa031ac51/gistfile1.json"; 
IEnumerator Start() 
{ 
    WWW www = new WWW(url); 
    yield return www; 

    string respText = www.text; 
    Debug.Log(respText); 
    //Output: ���� 

    byte[] resp = www.bytes; 
    var str = System.Text.Encoding.Default.GetString(resp); 
    Debug.Log(str); 
    //Output: ÿØÿà 

    if (www.responseHeaders.Count > 0) 
    { 
     foreach (KeyValuePair<string, string> entry in www.responseHeaders) 
     { 
      Debug.Log(entry.Value + "=" + entry.Key); 
      //Output: HTTP/1.0 200 OK=STATUS 
      //... 
      //image/jpeg=CONTENT-TYPE 
     } 
    } 

} 
} 

ответ

0

.text метод Класс ВСП возвращает UTF8 Byte Order Mark в начале ответа по умолчанию. См a description of the BOM here

Вы можете попробовать:

string jsonText = ""; 
if (string.IsNullOrEmpty(www.error)) 
{ 
    jsonText = System.Text.Encoding.UTF8.GetString(www.bytes, 3, www.bytes.Length - 3); // Skip the UTF8 BOM 
    JSONObject myObject = new JSONObject(jsonText); 
} 
+0

Спасибо, но все, что, кажется, делает это устраняя. Теперь я получаю один вместо 4, но на самом деле он не разбирает текст. Если я пропущу первые 4 байта, это всего лишь пустой ответ. Вывод в консоли: неправильное форматирование JSON: – willjfield

+0

@willjfield использует что-то вроде Wireshark или Fiddler, чтобы точно видеть, что возвращается ... Я вижу эту ссылку, если я вставляю ее в браузер, но она возвращается как текстовая/чем application/json. –

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