###前提・実現したいこと
javaでdocomoAPI音声認識にPOSTしたいのですがエラーがでる
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=speech_recognition&p_name=api_amivoice_1#tag01
APIリファレンスです
###発生している問題・エラーメッセージ
必須パラメータがない とエラーが帰ってくる
POSTはできている模様です
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package libs; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.MalformedURLException; import java.net.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.FileSystem; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author KITT */ public class test { public test() throws IOException{ String boundary ="JT49KPkVKrz2Y4YrGhLezUP8fWHU6kARBrpKRpuNsjXm"; String based=null;//base64に変換後、文字列として格納 FileSystem fs = FileSystems.getDefault(); Path p = fs.getPath("C:\voice.raw"); Charset charset = StandardCharsets.UTF_8;//キャラセットをUTF-8にする byte[] vb = Files.readAllBytes(p);//voice.rawを読み込む try { URL url =new URL("https://api.apigw.smt.docomo.ne.jp/amiVoice/v1/recognize?APIKEY=XXXXXXXXXXXXXXXXX");//APIkeyは省略 URLConnection con=url.openConnection(); con.setDoOutput(true); OutputStreamWriter writer=new OutputStreamWriter(con.getOutputStream()); BufferedWriter bw1 = new BufferedWriter(writer); /*送信文字列*/ bw1.write("Content-Type: multipart/form-data; boundary=<"+boundary+">\r\n--<"+boundary+">\r\nContent-Disposition: form-data; name=\"v\"\r\n\r\n"); bw1.write("on\r\n--<"+boundary+">\r\n"); bw1.write("Content-Disposition: form-data; name=\"a\";filename=\"voice.raw\"\r\n"); bw1.write("Content-Type: application/octet-stream"); bw1.write("\r\n\r\n"); java.util.Base64.Encoder Encoder = java.util.Base64.getEncoder(); based=Encoder.encodeToString(vb); bw1.write(based); bw1.write("\r\n"); bw1.write("--<"+boundary+">--"); bw1.flush(); bw1.close(); //受信 InputStream stream = con.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); String responseData = null; while((responseData = reader.readLine()) != null){ System.out.print(responseData); } stream.close(); } catch (MalformedURLException ex) { Logger.getLogger(test.class.getName()).log(Level.SEVERE, null, ex); } }} ###該当のソースコード```Java コード
PYTHONでのPOSTには成功していますが、JAVAでPOSTしたいと思い作成中です
###試したこと
APIリファレンス通りに文字列を入力した
文字列のfilenameをvoice.rawにした
キャラセットをUTF-8にしたり、outputstreamのキャラセットをUTF-8にしたりしたが、同じ返答結果になる
###補足情報(言語/FW/ツール等のバージョンなど)
netbeans jdk1.8 win10
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/06 11:37
2017/10/07 02:13