Грешка 400 bing текст към реч

Използвам api TTS на bing, получавам информацията от: http://msdn.microsoft.com/en-us/library/ff512420.aspx

Това е кодът (от уеб страницата):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;
using System.Media;

namespace Apigoogleprova
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        private void button2_Click(object sender, EventArgs e)
        {
            Speak();

        }

    private static void ProcessWebException(WebException e, string message)
    {
        Console.WriteLine("{0}: {1}", message, e.ToString());

        // Obtain detailed error information
        string strResponse = string.Empty;
        using (HttpWebResponse response = (HttpWebResponse)e.Response)
        {
            using (Stream responseStream = response.GetResponseStream())
            {
                using (StreamReader sr = new StreamReader(responseStream, System.Text.Encoding.ASCII))
                {
                    strResponse = sr.ReadToEnd();
                }
            }
        }
        Console.WriteLine("Http status code={0}, error message={1}", e.Status, strResponse);
    }

     public static void Speak()
    {
        string appId = "myappID"; //go to http://msdn.microsoft.com/en-us/library/ff512386.aspx to obtain AppId.
        string text = "speak to me";
        string language = "en";

        string uri = "http://api.microsofttranslator.com/v2/Http.svc/Speak?&appId=" + appId +"&text;=" + text + "&language;=" + language;
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
        //httpWebRequest.Proxy = new WebProxy(""); set your proxy name here if needed

        WebResponse response = null;
        try
        {
            response = httpWebRequest.GetResponse();
            using (Stream stream = response.GetResponseStream())
            {
                using (SoundPlayer player = new SoundPlayer(stream))
                {
                    player.PlaySync();
                }
            }
        }
        catch (WebException e)
        {
            //ProcessWebException(e, "Failed to speak");
            MessageBox.Show("Error"+e);
        }
        finally
        {
            if (response != null)
            {
                response.Close();
                response = null;
            }
        }
    }



}
}

(Промених „myappID“ с идентификатора, който ми предостави Microsoft)

Когато стартирам приложението, получавам следната грешка:

Грешка на отдалечен сървър (400) Лоша заявка

Опитах се да отида в мрежата с моите браузъри (firefox, chrome и IE):

http://api.microsofttranslator.com/v2/Http.svc/Speak?&appId=myappID=speak to me=en

И резултатът е:

**Argument Exception** 
Method: Speak()
Parameter: text Message: Value cannot be null.
Parameter name: text message
id=3835.V2_Rest.Speak.25BD061A

Някой знае ли как да се реши този проблем?

Благодаря ти много!


person Juliet    schedule 16.09.2011    source източник
comment
Пълен дълъг изстрел - опитвали ли сте да вземете ; от имената на параметрите в низа на заявката?   -  person AndrewC    schedule 16.09.2011
comment
Благодаря ти!! това решава проблема! правилният код е: string uri = api.microsofttranslator.com/v2/Http .svc/Speak?&appId= + appId +&text= + текст + &language= + език;   -  person Juliet    schedule 16.09.2011
comment
Ще поставя това като отговор, само за пълнота.   -  person AndrewC    schedule 16.09.2011


Отговори (1)


Премахни ; от имената на параметрите в низа на заявката.

person AndrewC    schedule 16.09.2011