我正在使用一个API,我想在我的Java项目中使用它,当我测试它时,他们给出了curl的示例,它工作正常,没有问题并返回结果。
问题是如何将这段代码转换为Java
这是我在cUrl中拥有的命令。
curl --form text='apple' --form user_audio_file=@D:/apple.wav "https://api.speechace.co/api/scoring/text/v0.1/json?key=mykey&dialect=en-us" | python -m json.tool
我尝试使用的Java代码。
String Url = "https://api.speechace.co/api/scoring/text/v0.1/json";
String key = "my key";
String dialect = "en-us";
String user_id = "81ozow";
Url += "?" + "key=" + key + "&dialect=" + dialect + "&user_id=" + user_id;
File file = new File("D:/apple.wav");
byte[] postData = new byte[(int) file.length()];
DataInputStream dis = new DataInputStream(new FileInputStream(file));
dis.readFully(postData);
dis.close();
String request = Url;
URL url = new URL(request);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
//conn.addRequestProperty("text", "'apple'");
//conn.addRequestProperty("user_audio_file", "D:/apple.wav");
try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
wr.write("text='apple'".getBytes());
wr.flush();
wr.write("user_audio_file=".getBytes());
wr.write(postData);
wr.flush();
} catch (Exception e) {
out.println(conn.getErrorStream().toString());
e.printStackTrace();
}
out.println("Done upload data");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
String result = "";
while ((line = rd.readLine()) != null) {
result += line;
}
rd.close();
out.println(result);
但是当我使用此代码时,结果是服务器发了错误,因此如何将cUrl代码转换为java,我使用了许多API,在此之前以cUrl命令为例,这是我第一次遇到这种情况问题,我以前从未使用过--form
和| python -m json
这样的命令,我该如何用Java编写它们。
我已经看到很多curls命令,并且能够将其转换,所以任何帮助我该怎么做。