【发布时间】:2016-03-09 10:48:51
【问题描述】:
目前,我可以在终端 (MAC) 中使用此命令上传 .wav 文件:
curl -H 'X-Arg: AccessKey=3f55abc5-2830-027ce-e328-4e74df5a3f8f' --data-binary @audio.wav -H 'Content-Type: audio/wav' http://generic-15327.2-3-11.com/bbb.aaa.eval/abc
我想在 Android 上做同样的事情。到目前为止,我已经实现了一个带有 URLConnection 的 AsyncTask,我发送了标题和所有内容,除了波文件。得到一个 json 响应,告诉你没有上传文件,显然,但到目前为止一切都很好,我知道我正确地实现了标题和连接。 现在,我想上传 .wav 文件来总结所有内容,但我在这里有点迷失了。 如何使用 URLConnection 在 Android 中上传 .wav 文件?下面是我的代码,它在一个 AsyncTask 中,为了简短起见,我不会放:
URL obj = new URL(BASE_URL);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.setRequestProperty("X-Arg", "AccessKey=3fcb4985-2830-07ce-e998-4e74df5a3f8f");
conn.setRequestProperty("Content-Type", "audio/wav");
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
String wavpath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/audio.wav";
File wavfile = new File(wavpath);
boolean success = true;
if (wavfile.exists()) {
app.loge("**** audio.wav DETECTED");
}
else{
app.loge("**** audio.wav MISSING");
}
conn.connect();
//CODE TO UPLOAD THE FILE SHOULD GO HERE!!
int responseCode = conn.getResponseCode();
app.logy("POST Response Code : " + responseCode);
//Fetch response JSON
if (responseCode == HttpURLConnection.HTTP_OK) { //success
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
app.loge(response.toString());
result = 1;
} else {
app.loge("POST FAILED");
result = 0;
}
【问题讨论】:
-
stackoverflow.com/questions/11766878/… stackoverflow.com/questions/13480160/… 当您在 Google 上搜索
java upload file httpurlconnection时,会出现很多博客文章。现有材料未涵盖您的场景的哪些内容? -
@CommonsWare URL1 使用不推荐使用的方法,并且 URL2 没有指定“myentity”变量是如何初始化的。
标签: java android android-studio file-upload urlconnection