从带有post的HTTP请求获取数据时出现一些错误

时间:2015-05-09 03:39:58

标签: c# http post

我按照HTTP request with post的说明从网站获取音频文件:http://www.tudienabc.com/phat-am-tieng-nhat(此网站允许我们输入英文或日文单词/短语/句子并生成音频文件,看看喜欢回发后的HTML代码第129行的“/pronunciation/audio?file_name=1431134309.002.mp3&file_type=mp3”。

但是,我从自己的应用程序获得的音频文件与从本网站生成的音频文件不同。从本网站生成的音频文件(mp3)可以在www.tudienabc.com/pronunciation/上播放(例如:www.tudienabc.com/pronunciation/audio?file_name=1431141268.9947.mp3&file_type=mp3),但音频文件从我的应用程序生成无法播放(例如:www.tudienabc.com/pronunciation/audio?file_name = 1431141475.4908.mp3& file_type = mp3)。

那么,有什么不对?以及如何获得确切的音频文件?

这是我的代码:

var request = (HttpWebRequest)WebRequest.Create("http://www.tudienabc.com/phat-am-tieng-nhat");

var postData = "_method=POST&data[Pronun][text]=hello&data[Pronun][type]=3";
var data = Encoding.ASCII.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

var response = (HttpWebResponse)request.GetResponse();
var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();

int m = responseString.IndexOf("pronunciations/audio?file_name=")+"pronunciations/audio?file_name=".Length;
int n = responseString.IndexOf("&file_type=mp3");
string filename = responseString.Substring(m, n - m);

return filename;

谢谢,

1 个答案:

答案 0 :(得分:0)

他们的网站使用ECMAScript处理音频

<script>
       var wait = new waitGenerateAudio(
         '#progress_audio_placeholder',
         '/pronunciations/checkFinish/1431151184.739',
         'aGVsbG8gZnlyeWU=',
         '/pronunciations/audio?file_name=1431151184.739.mp3&amp;file_type=mp3',
         'T?o file l?i'
       );
 </script>

您需要能够处理要创建的音频文件的JavaScript。

结帐 C# httpwebrequest and javascript 要么 WebClient runs javascript

使用无头浏览器。

我建议寻找一个更通用的文本到音频库。 https://gist.github.com/alotaiba/1728771