public static void setPicture(User user, Picture picture, HavePicture havePicture, File file) {
try {
URL url = new URL(Request.BASE_URL + Request.BASE_PATH + Request.GAME_SYSTEM_PATH + Request.SET_PICTURE_PATH);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setUseCaches(false);
connection.setDoOutput(true); // indicates POST method
connection.setDoInput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
connection.setRequestProperty("User-Agent", "CodeJava Agent");
connection.setRequestProperty("Test", "Bonjour");
//load file with multi small pices not one lage pice good to use large filse
connection.setChunkedStreamingMode(1024);
OutputStream outputStream = connection.getOutputStream();
PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, Request.CHARSET), true);
addFormField(writer, Request.PARAM_USER, Json.toJson(user));
addFormField(writer, Request.PARAM_PICTURE, Json.toJson(picture));
addFormField(writer, Request.PARAM_HAVE_PICTURE, Json.toJson(havePicture));
addFilePart(writer, outputStream, Request.PARAM_FILE, file);
StringBuffer response = new StringBuffer();
writer.append(LINE_FEED).flush();
writer.append("--" + boundary + "--").append(LINE_FEED);
writer.close();
// checks server's status code first
int status = connection.getResponseCode();
if (status == HttpURLConnection.HTTP_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
response.append(line);
}
reader.close();
connection.disconnect();
} else {
throw new IOException("Server returned non-OK status: " + status);
}
String a = response.toString();
System.out.println(a);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static void addFormField(PrintWriter writer, String name, String value) {
writer.append("--" + boundary).append(LINE_FEED);
writer.append("Content-Disposition: form-data; name=\"" + name + "\"").append(LINE_FEED);
writer.append("Content-Type: text/plain; charset=" + Request.CHARSET).append(LINE_FEED);
writer.append(LINE_FEED);
writer.append(value).append(LINE_FEED);
writer.flush();
}
用于图像文件:
private static void addFilePart(PrintWriter writer,OutputStream outputStream, String fieldName, File uploadFile) throws IOException {
String fileName = uploadFile.getName();
writer.append("--" + boundary).append(LINE_FEED);
writer.append("Content-Disposition: form-data; name=\"" + fieldName + "\"; filename=\"" + fileName + "\"").append(LINE_FEED);
writer.append("Content-Type: "+URLConnection.guessContentTypeFromName(fileName)).append(LINE_FEED);
writer.append("Content-Transfer-Encoding: binary").append(LINE_FEED);
FileInputStream inputStream = new FileInputStream(uploadFile);
writer.append("Content-length: "+inputStream.available()).append(LINE_FEED);
System.out.println("- - "+"Content-length: "+inputStream.available());
writer.append(LINE_FEED);
writer.flush();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
outputStream.flush();
inputStream.close();
writer.append(LINE_FEED);
writer.flush();
}
以下是我完成的错误:
java.net.socketException:sendto失败:在libcore.io.iobridge.MaybeThrowAfterSendto(Iobridge.java:586)在libcore.io.iobridge.sendto(Iobridge.java:555)在java.net.plainsockeTimpl.write(plainsockeTimpl.java:520)在java.net.plainsockeTimpl.access$100(plainsockeTimpl.java:43)在:70)在com.android.okio.realBufferedSink.emitCompleteSegments(realBufferedSink.java:116)在com.android.okkio.realBufferedSink.write(realBufferedSink.java:44)在com.android.okhttp.internal.http.httpConnection$chunkedSink.write(httpConnection.java:334)在com.android.okio.realBufferedSink.emitCompleteSegments s.server$override.addFilePart(server.java:435)位于com.mayan.ameritrade.android.tools.server$override.access$dispatch(server.java)在com.mayan.ameritrade.android.tools.server.addfilePart(server.java:0)在java.lang.reflect.Method.invoke(原生方法)在java.lang.reflect.Method.invoke(Method.java:372)在com.android.tools.fd.runtime.androidInstantruntime.invokeProtectedStaticMethod(androidInstantruntime.java:170)在在com.mayan.ameritrade.android.mainactivity$2$1.run(mainactivity.java:99)在java.lang.thread.run(thread.java:818)由:android.system.errnoException:sendto failed:EPIPE(breaked pipe)在libcore.io.posix.sendto(Native methods)在libcore.io.blockguardos.sendto(posix.java:206)在
我现在不想做什么,谢谢你的帮助!
不能使用PrintWriter上载图像。..你不...但是...
PrintWriter只用于文本。
您正在混合PrintWriter和正常的OutputStream。那不行。
我正在尝试使用HttpURLConnection通过http url发送XML。
我编写了一个java程序来从url NSE Bhavcopy下载文件 但是我得到了“thread'main'java.net.ConnectException:Connection timed Ut:Connect”,我尝试了以下排列和组合,但没有成功。 null 以下是代码和跟踪以供参考,有人可以帮助我吗 痕迹
我使用可恢复上传任何大小的文件上传。如果我在上传文件时遇到任何问题,我会等待指数退避,然后询问当前上传会话的字节范围,然后从最后上传的字节继续。这个过程最多重复5次。如果文件最终没有上传成功,我会在日志中写入一个错误。 不幸的是,我没有记录所有的中间错误,所以我只知道最后一个错误是“410,description:Internal error”。 该文件小于1KB,在记录错误之前,整个过程大约花了
问题内容: 我正在使用Java Web Application中的生成报告。 我有以下一行来获取报告文件。 但是当我尝试使用上面的线时,我得到了。但是当我尝试使用以下行时,程序成功执行。 所以,我想知道第一行的问题是什么? 提前致谢… 问题答案: 您提供的路径应该是servlet路径。通常,servlet路径具有正斜杠。 请尝试一下。
我想上传一个图像文件。当我调用我的API上传文件使用postman,得到的错误,如. 我无法将此文件发布到我的Laravel控制器。如何在Laravel中发布文件。有人能帮我解决这个问题吗? 这是我的控制器功能, 在这一行
我在使用HTTPUrlConnection时遇到了一些问题。代码基本上是在循环中运行的,每次都连接到不同的URL,检查响应,如果响应满足某些条件,则退出。我被StackOverflowerr搞砸了,但我不确定自己搞砸了什么。我没有使用