我在BlackBerry应用程序中使用HttpConnection类J2ME将数据发送到Web服务器。我需要在HTTP请求的正文中发送图像的内容。
这就是我的工作
在数组中获取文件的字节
打开HTTP连接
将内容类型标题设置为image / jpeg
获取连接的输出流
将字节写入输出流
关闭输出流和连接
但图像未上传到服务器。可能是什么问题?
感谢。
编辑 - 添加代码
HttpConnection conn = null;
OutputStream out = null;
try{
conn = new HttpConnection(Connector.open(myURL));
conn.setRequestProperty("Content-Type", "image/jpeg");
conn.setRequestMethod(HttpConnection.POST);
conn.setRequestProperty("Content-Disposition", "form-data");
conn.setRequestProperty("Connection", "Keep-Alive");
out = conn.openOutputStream;
out.write(buffer, 0, buffer.length);
conn.setRequestProperty("Content-Length", buffer.length);
out.flush();
}
catch(Exception e){
e.printStackTrace();
}
finally{
if(out != null)
out.close();
if(conn != null){
System.out.println("" + conn.getResponseCode());
conn.close();
}
}
修改
相同的代码,当我用字符串尝试它,工作正常并将字符串发送到服务器。但它仍然是图像字节的问题。
答案 0 :(得分:4)
列表中可能缺少的一些内容:
答案 1 :(得分:2)
conn = new HttpConnection(Connector.open(myURL));
这条线错了。 Connection是一个工厂类,通过查看适当的协议实现来创建新的Connection对象。
HttpConnection conn = (HttpConnection) Connector.open(myURL);
其余代码似乎没问题。当您进行POST时,在最小化时,您需要定义内容类型和内容长度。
答案 2 :(得分:1)
您最需要在发送POST数据之前设置所有标头,包括Content-Length
标题。
另外,请确保发送的邮件对请求有效,而不是仅响应邮件头。
答案 3 :(得分:0)
您需要对字节进行编码(最好是Base-64)并发送该字符串。原始字节不太可能是http安全的。
然后在服务器上,你需要将它们解码回一个字节数组并做你要做的任何事情(保存为文件,存入数据库等)。