创建一个调用PHP服务器的.Net 3.5程序集。返回值JSON对象。 JSON对象具有Base64编码的WAV文件(见下文)。尝试使用Newtonsoft.Json从“值”转换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);
这是我被卡住的地方。错误读取:
“未终止的字符串。预期的分隔符:\”。路径'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 :(得分: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();