- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Android 上通过 POST 下载文件,检查下载进度并将其保存到 SD 卡上的文件中。这是我的 AsyncTask
的代码:
class DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}
@Override
protected String doInBackground(String... arg) {
try {
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("id", arg[0]));
StringBuilder result = new StringBuilder();
boolean first = true;
for (NameValuePair pair : params) {
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
}
byte[] postDataBytes = result.toString().getBytes("UTF-8");
URL url = new URL(DOWNLOAD_URL);
HttpURLConnection conn = (HttpURLConnection) url
.openConnection();
conn.setRequestMethod("POST");
conn.setReadTimeout(10000);
conn.setRequestProperty("Content-Length",
String.valueOf(postDataBytes.length));
conn.setConnectTimeout(15000);
conn.setDoOutput(true);
conn.getOutputStream().write(postDataBytes);
int lenghtOfFile = conn.getContentLength();
FileOutputStream f = new FileOutputStream(new File(rootDir
+ "/__test/", fileName));
conn.setDoInput(true);
InputStream in = conn.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
long total = 0;
while ((len1 = in.read(buffer)) > 0) {
total += len1;
publishProgress("" + (int) ((total * 100) / lenghtOfFile));
f.write(buffer, 0, len1);
}
f.close();
conn.connect();
} catch (Exception e) {
e.printStackTrace();
DebugLog.e(TAG, e.getMessage());
}
return null;
}
protected void onProgressUpdate(String... progress) {
DebugLog.d(TAG, progress[0]);
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String unused) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
}
public void checkAndCreateDirectory(String dirName) {
File new_dir = new File(rootDir + dirName);
if (!new_dir.exists()) {
new_dir.mkdirs();
}
}
问题是,当我尝试同时使用 setDoInput()
和 setDoOutput()
方法时,我得到了 java.lang.IllegalStateException : 已连接
错误。我该如何解决?
最佳答案
在 conn.getOutputStream()
之前同时执行 conn.setDoInput(true)
和 conn.setDoOutput(true)
。
关于java - 通过 POST : using setDoInput() and setDoOutput() at the same time 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24281737/
URLConnection中有setDoOutput()。根据documentation我应该 Set the DoOutput flag to true if you intend to use t
我正在使用以下代码行调用 POST 网络服务。 我不清楚 connection.setDoOutput( true ); 和 connection.setDoInput( true ); 能否详细说明
我在尝试使用 HttpsURLConnection API 运行以执行 HTTPS GET 请求时遇到 java.lang.IllegalStateException: Already connect
我正在尝试在 Android 上通过 POST 下载文件,检查下载进度并将其保存到 SD 卡上的文件中。这是我的 AsyncTask 的代码: class DownloadFileAsync exte
HttpURLConnection.setDoInput和HttpURLConnection.setDoOutput的作用或目的是什么? 最佳答案 来自 URLConnection 的文档: Set
代码如下: String Surl = "http://mysite.com/somefile"; String charset = "UTF-8"; query = String.format("p
我是一名 QA,希望了解更多有关 Java 编程的知识,我遇到的问题是:我正在尝试将员工数据发布到一些假 Rest API 的数据库中,但我得到了 Cannot write to a URLConne
自从更新到 Ice Cream Sandwich 后,我的 POST 请求不再有效。在 ICS 之前,这工作正常: try { final URL url = new URL("htt
我是一名优秀的程序员,十分优秀!