从JSON对象中提取Base64编码的WAV

本文关键字:编码 WAV Base64 提取 JSON 对象 | 更新日期: 2023-09-27 18:05:25

创建一个调用PHP服务器的。net 3.5程序集。返回JSON对象的值。JSON对象有一个Base64编码的WAV文件(见下文)。试着用Newtonsoft。Json以获取从"value"转换的WAV。花了8个小时试图…

这是我试过的代码

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);

这就是我卡住的地方。错误读取:

"无端接的字符串。期望分隔符:'"。路径的结果。值',第一行,位置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);

解决办法是周一第一件事就是上线…

从JSON对象中提取Base64编码的WAV

这应该可以正常工作。但这可能不是最有效的解决方案。不要忘记关闭你的流,因为它们实现了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();