站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题请教j2me上传图片的问题(百思不得其解)

请教j2me上传图片的问题(百思不得其解)

摘要: 请教j2me上传图片的问题(百思不得其解)


客户端:

sc = (HttpConnection)Connector.open( url, Connector.READ_WRITE, true );
sc.setRequestMethod( HttpConnection.POST );
sc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
sc.setRequestProperty("Content-Length", String.valueOf(data.length));

OutputStream output = sc.openOutputStream();
output.write(data, 0, data.length);

//output.flush();
output.close();

服务器端:

java.io.InputStream in = request.getInputStream();
byte[] b = new byte[100000];
byte[] tmp = new byte[100000];
int size = 0;

java.io.File f = new java.io.File( request.getRealPath("/"), System.currentTimeMillis() + ".png");
java.io.DataOutputStream o = new java.io.DataOutputStream(new java.io.FileOutputStream(f));

int len = 0;
while( ( len = in.read( tmp ) ) != -1 )
{
o.write(tmp,0,len);
size+=len;
}
o.close();

各位高手,各位大侠,请教两个问题:
1.我的程序在模拟器上上传图片,服务器可以接收到;而使用真机(索爱k700和k750c)上传,则服务器收到的是0字节,此时查看手机流量,确实已经把10k的数据发出去了,请问这是什么原因?
2.另外,当我在服务器端使用in.available()语句时,不管是模拟器还是真机都为0.


1.先确定你的SIM卡是CMWAP还是CMNET,CMWAP连接网络的时候需要做代理;

2.in.available()是确定网络通道中有多少流可读,为0很正常,我也没有做过J2EE的东东,你自己翻一下DOC,request应该会提供getLength()的方法,我觉得那个可能行吧


是CMNET的,我用的是CMNET的连接方式.
而且我用真机发送request请求的名值对信息(?name='111'&id'222')时,服务器request.getparam()能够收到,只不过我现在是通过OutputStream发图片,而服务器InputStream收不到数据,郁闷啊


应该是你的HTTP头设置问题
sc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
改为
sc.setRequestProperty("Content-Type", "application/octet-stream");


多谢大侠指点,问题解决了,真是一语道破个中玄机,的确是HTTP头的设置问题.


↑返回目录
前一篇: 线程的调用和paint的关系应该是怎么样的
后一篇: J2ME中使用JNI问题:System.loadLibrary("pimdll")