C# 从谷歌翻译下载

C# 从谷歌翻译下载,c#,C#,我试图能够从谷歌翻译文本说话API下载mp3。我的代码适用于英语,但不适用于日语字符。下载的音频文件是静默的。有人知道我做错了什么吗 我用这个作为参考,但他用德语而不是日语工作 using (var client = new WebClient()) { client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0

我试图能够从谷歌翻译文本说话API下载mp3。我的代码适用于英语,但不适用于日语字符。下载的音频文件是静默的。有人知道我做错了什么吗

我用这个作为参考,但他用德语而不是日语工作

using (var client = new WebClient())
        {
            client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
            client.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
            client.Headers.Add("Accept-Language", "ja-JP,ja;q=0.8,en-US;q=0.6,en;q=0.4");
            client.Encoding = System.Text.Encoding.UTF8;

            client.DownloadFile("http://translate.google.com/translate_tts?tl=ja&q=日本語", @"C:\test.mp3");
        }

我从未使用过该API,但我建议您使用System.Uri.EscapeDataString()对传递给Client.DownloadFile的URL进行编码。URL字符串中的那些日语字符看起来不太好

这是解决方案,它是有效的:)。在我看来,您缺少用户代理、接受语言和删除客户端编码部分

        using (var client = new WebClient())
        {
            client.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
            client.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36");
            client.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
            client.Headers.Add("Accept-Language", "en-US,en;q=0.8");
            //client.Encoding = System.Text.Encoding.UTF8;

            client.DownloadFile("http://translate.google.com/translate_tts?tl=ja&q=%E6%97%A5%E6%9C%AC%E8%AA%9E", @"test.mp3");
        }

谢谢,我试着转义字符串,但它仍然下载一个静默文件。成功了!谢谢