2013-03-24 3 views
1

Создание сборки .Net 3.5, которая вызывает вызов PHP-сервера. Возвращаемое значение - объект JSON. Объект JSON имеет WAV-файл с кодировкой Base64 (см. Ниже). Попытка использовать Newtonsoft.Json для преобразования WAV из «значения». Провел 8 часов, пытаясь ...Extract Base64 закодированный WAV от объекта JSON

вот код, который я пытался

int count = 0; 
byte[] buf = new byte[8192]; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
Stream resStream = response.GetResponseStream(); 
count = resStream.Read(buf, 0, buf.Length); 
string json = Encoding.ASCII.GetString(buf, 0, count); 

JObject jo = JObject.Parse(json); 
//JObject jo = (JObject)JsonConvert.DeserializeObject(json); 

Это где я застрял. Ошибка чтения:

"Unterminated string. Ожидаемый разделитель: \". Путь «result.value», строка 1, позиция 3449.»

Почти как строка слишком долго ...

даже не дошел до Base64 преобразования кода я источники из Интернета, который нуждается чтобы быть переделаны

char[] base64CharArray; 
inFile = new System.IO.StreamReader(inputFileName,System.Text.Encoding.ASCII); 
base64CharArray = new char[inFile.BaseStream.Length]; 
inFile.Read(base64CharArray, 0, (int)inFile.BaseStream.Length); 
base64String = new string(base64CharArray); 

решение это пойти живой первое понедельник ...

+0

Во-первых, у вас возникли проблемы с получением строки base64 из JSON или возникли проблемы с преобразованием строки base64 в wav-файл? Во-вторых, что вы пробовали? –

+0

Джейсон пытался получить строку base64 из JSON. Даже не добрались до base64 до преобразования wav. Я использовал это, чтобы попытаться помочь мне: http://james.newtonking.com/projects/json/help/html/Overload_Newtonsoft_Json_JsonConvert_DeserializeObject.htm http://stackoverflow.com/questions/10585500/deserialize-dicionary-with-json- net http://stackoverflow.com/questions/3391209/deserialize-json-base64-binary-in-net-using-datacontractjsonserializer http://stackoverflow.com/questions/11126242/using-jsonconvert-deserializeobject-to-deserialize- json-to-ac-sharp-poco-class – Coder

ответ

2

это должно работать нормально. Возможно, не самое эффективное решение, хотя. не забывайте закрывать потоки, хотя, так как они реализовать IDisposable.
Здесь я использую WebClient, но на самом деле это не имеет никакого значения. Я думаю, что HttpWebRequest избыточен в этом случае.

  WebClient client = new WebClient(); 
      Stream stream = client.OpenRead("http://waps.repli-con.com/services/ivrservices/getUserNameRecording/10000"); 
      StreamReader reader = new StreamReader(stream); 

      JToken token = JObject.Parse(reader.ReadToEnd().ToString()); 

      string base64string = token.SelectToken("result").SelectToken("value").ToString(); 
      Byte[] b = Convert.FromBase64String(base64string); 
      System.IO.File.WriteAllBytes(@"C:\Users\user\Desktop\test.wav", b); 
      stream.Close(); 
+0

Спасибо RAS ... Я никогда не видел примеров, которые использовали JToken. – Coder

+0

@StevenF, пожалуйста. – RAS

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