返回信息流创建了一个继承AsyncTask的类,实现异步上传图片,远程服务器测试正常,但是本地测试时执行到getResponseCode()时阻塞,不返回值,可能是什么原因呢?
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #22202同步于 2015/5/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖
【Android问题求助】HttpURLConnection.getResponseCode()阻塞
yxking
2015/5/12镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
URL url = new URL(urlServer);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setChunkedStreamingMode(256 * 1024);
connection.setConnectTimeout(5 * 1000);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestMethod("POST");
connection.setRequestProperty("Connection", "Keep-Alive");
connection.setRequestProperty("Charset", "UTF-8");
connection.setRequestProperty("Content-Type",
"multipart/form-data;boundary=" + boundary);
outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(twoHyphens + boundary + lineEnd);
outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\""+ uploadPath + "\"" + lineEnd);
outputStream.writeBytes(lineEnd);
Log.v("up111","uploadPath:"+uploadPath);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
buffer = new byte[bufferSize];
// Read file
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
while (bytesRead > 0) {
outputStream.write(buffer, 0, bufferSize);
length += bufferSize;
progress = (int) ((length * 100) / totalSize);
publishProgress(progress);
bytesAvailable = fileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}
outputStream.writeBytes(lineEnd);
outputStream.writeBytes(twoHyphens + boundary + twoHyphens
+ lineEnd);
publishProgress(100);
Log.v("up111","serverResponseCode = ???...");
try {
int serverResponseCode = connection.getResponseCode();
Log.v("up111","serverResponseCode = "+serverResponseCode);
} catch (IOException e) {
// TODO: handle exception
Log.v("up111","caught Exception!");
}
String serverResponseMessage = connection.getResponseMessage();
Log.v("up","serverResponseMessage = "+serverResponseMessage);
fileInputStream.close();
outputStream.flush();
outputStream.close();
【 在 dss886 的大作中提到: 】
: 贴代码