Я тупица здесь! Я написал приложение для Android, которое загружает изображение с устройства в сервлет. Приложение работает безупречно на эмуляторе как на Windows 7, так и на Linux. Однако, когда я запускаю приложение на своем реальном устройстве, а сервлет на моем компьютере с Windows, я получаю исключение SocketTimeoutException! Но если сервлет работает на компьютере с Linux, он работает отлично! Любые идеи, что я должен настроить Windows, чтобы заставить это работать ?! Я даже изменил свои серверы приложений с Glassfish на Tomcat и все те же результаты! Любые советы будут оценены .. Спасибо
Вот часть сервлета, которая читает изображение из клиента Android. Я использовал apache fileupload на стороне клиента
try {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (item.getFieldName().equals("imgFile")) {
String fileName = item.getName();
InputStream fileContent = item.getInputStream();
int d;
FileOutputStream fout = new FileOutputStream(new File( DIR + "savedImage.jpg"));
while((d = fileContent.read()) != -1)
{
fout.write(d);
}
fout.close();
}
}
} catch (FileUploadException e) {
throw new ServletException("Cannot parse multipart request.", e);
}
С сервлетом, развернутым на моем компьютере с Windows, я получаю исключение при
новый ServletFileUpload (новый DiskFileItemFactory ()). ParseRequest (запрос);
линия.
Вот сегмент кода клиента Android, который отправляет файл сервлету
File f = new File("/mnt/sdcard/img/imgToUpload.jpg");
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://192.168.2.2:8084/WebApplication5/imgServlet");
MultipartEntity entity = new MultipartEntity();
FileBody fb = new FileBody(f);
entity.addPart("imgFile", fb);
post.setEntity(entity);
try {
HttpResponse servletResponse = client.execute(post);
HttpEntity respentity = servletResponse.getEntity();
} catch (IOException ex) {
Logger.getLogger(FTXWActivity.class.getName()).log(Level.SEVERE, null, ex);
}