我正在使用多部分和流将图像文件上传到我的实时服务器(WCF服务)。 图像大小为500-700KB,当我使用真正的相机。从模拟器它成功上传样品,但是当我将它安装到我的索尼爱立信Arc S时,应用程序不会上传任何图像。有代码检查状态代码,但没有发生,没有错误,没有例外,没有服务器响应。在我的手机我使用移动数据连接(供应商格雷门电话,GSM,孟加拉国)。不明白是什么问题。有谁能够帮助我?文件上传在模拟器中工作,但不在设备中
的Andriod代码:
HttpPost httppost = new HttpPost(SERVICE_URI + "/uploadImage");
DefaultHttpClient httpclient = new DefaultHttpClient();
File dir = Environment.getExternalStorageDirectory();
File imageFile = new File(dir, getImagepath(directoryName, false));
if (imageFile.exists()) {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "File Exist", Toast.LENGTH_SHORT)
.show();
}
});
MultipartEntity entity = new MultipartEntity();
entity.addPart("image", new FileBody(imageFile, "image/jpeg"));
httppost.setEntity(entity);
HttpResponse response = httpclient.execute(httppost);
StatusLine statusLine = response.getStatusLine();
final int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "Upload successful!", Toast.LENGTH_SHORT)
.show();
}
});
} else {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "File Upload Failed,status:"+statusCode, Toast.LENGTH_SHORT)
.show();
}
});
}
} else {
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(MainActivity.this, "File dont't exist", Toast.LENGTH_SHORT)
.show();
}
});
}
更新: 我在其中生成日志文件中的异常catch块添加记录写入“连接到XXXX:XXXX拒绝”,所以很显然,它正在得到一个异常,它是从服务器端。但仍然不知道是什么问题。
更新: 最后,我得到了这个问题这是我的“多分析器”在服务器端,我用错了ServiceURi android系统中的代码。你必须要小心选择适合您need.I解析器!对我的解析器文件做了很少的修改,并且工作正常!但仍然需要修改解析器,因为需要整合许多其他员工。无论如何,感谢您的努力!有用的链接:http://www.ideatoappster.com/android-to-wcf-streaming-multi-part-binary-images/
通过android ConnectivityManager。上传前首先检查连接是否正常。 \t connectivity =(ConnectivityManager)上下文 \t \t \t \t .getSystemService(context.CONNECTIVITY_SERVICE); \t \t netInfo = connectivity.getActiveNetworkInfo(); – 2013-03-12 09:40:25