我正在使用多部分和流将图像文件上传到我的实时服务器(WCF 服务)。图像大小为 500-700KB,当我使用真实相机时。从模拟器成功上传示例,但是当我将它安装到我的索尼爱立信 Arc S 时,应用程序没有上传任何图像。有用于检查状态代码的代码,但没有任何反应,没有错误,没有异常,没有服务器响应。在我的手机中,我正在使用移动数据连接(提供商 Grammen Phone,GSM,孟加拉国)。不明白是什么问题。有谁能够帮我?
安卓代码:
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();
}
});
}
更新: 我在生成日志文件的异常捕获块中添加了一个日志写入器。“连接到 xxxx:xxxx 被拒绝”,所以很明显它正在获取异常并且它来自服务器端。但仍然不知道有什么问题。
更新: 最后,我遇到了问题!这是我在服务器端的“多部分解析器”,我在 android 代码中使用了错误的 ServiceURi。你必须小心选择你需要的解析器。我对我的解析器文件做了一些修改,它的工作原理!但是仍然需要修改解析器,因为需要合并很多其他人员。无论如何,感谢您的努力!有用的链接:http ://www.ideatoappster.com/android-to-wcf-streaming-multi-part-binary-images/