2017-05-10 22 views
3

我需要一個音頻wav文件發送到的WebAPI控制器爲微軟Bing語音API話費送WAV音頻文件。 我做了什麼是,使用AJAX調用使用JavaScript在客戶端如何使用JavaScript和的WebAPI C#

  • 調用的WebAPI控制器

    1. 錄製音頻轉換成BASE64的數據,併發送所述的base64音頻數據 爲好。

      3.in的WebAPI控制器,轉換後的數據的base64到字節和發送到restpi(微軟)。

    請幫助我如何我可以做所有這些步驟正確

    Ajax調用,

    $.ajax({ 
          url: 'http://localhost:49818/api/voice', 
          type: 'POST', 
          data: base64Data, 
          dataType: 'json', 
          contentType: "application/json", 
          success: function (data) { 
    
           alert(data); 
          }, 
    

    的WebAPI控制器的方法

    string b64 = Request.Content.ReadAsStringAsync().Result; 
          //string text = System.IO.File.ReadAllText(@"D:\\base64.txt"); 
          var client = new HttpClient(); 
          byte[] toBytes1 = Encoding.ASCII.GetBytes(b64); 
    var uri = "https://westus.api.cognitive.microsoft.com/spid/v1.0/identificationProfiles/a1cb4a95-9e09-4f54-982b-09632aee7458/enroll?shortAudio=true"; 
    
          HttpResponseMessage response; 
          byte[] toBytes = Encoding.ASCII.GetBytes(b64); 
          using (var content = new ByteArrayContent(toBytes)) 
          { 
    
           content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 
           //content.Headers.ContentType = new MediaTypeHeaderValue("audio/wav"); 
    
           response = await client.PostAsync(uri, content); 
    
    
          } 
    
  • 回答

    0

    contentType是數據你的類型」重新發送,所以application/json;缺省值是application/x-www-form-urlencoded; charset=UTF-8

    如果使用application/json,你必須按順序發送JSON對象使用JSON.stringify()

    JSON.stringify()將一個javascript object變爲json文本並將其存儲在一個字符串中。

    data: JSON.stringify({"mydata":base64Data}), 
    

    在你的控制器,你必須通過一個名爲myData .Something這樣的參數:

    C#

    public ActionResult MyMethod(string mydata){ 
        //code 
    } 
    

    UPDATE

    $.ajax({ 
        url: 'http://localhost:49818/api/voice', 
        type: 'POST', 
        data:{"mydata":base64Data}, 
        dataType: 'json', 
        success: function (data) { 
         alert(data); 
        }, 
    }); 
    

    C#

    public async void Post([FromBody] string mydata){ 
        //code 
    } 
    
    +0

    確定完成了,然後如何將base64數據轉換爲字節,byte [] toBytes1 = Encoding.ASCII.GetBytes(b64); ..這行越來越 –

    +0

    看看這裏錯字節:http://stackoverflow.com/questions/6733845/c-sharp-convert-a-base64-byte –

    +0

    獲得的Web API控制器空值,這裏MYDATA爲空,如何從AjaxCall的把我的數據,我使用的數據:JSON.stringify({ 「MYDATA」:base64Data})..'// POST:API /語音 公共異步無效後([FromBody]串MYDATA) {//code}' –