2013-02-12 3 views
0

Я пытаюсь загрузить изображение в webService, но я не мог этого сделать, и я искал множество тем здесь и в Интернете, но не нашел хорошего решения ,Как загрузить изображение в .net WebService с Android

Когда я запускаю этот код, я получаю ошибку «Ошибка запроса».

UPDATE: Я использовал некоторые коды, которые в этой ссылке: Uploading MS Word files from Android to .Net WCF?

Но давая мне FileNotFoundException, но мой путь к файлу, который: /mnt/sdcard/ImageDir/images/ilan_1360917248037__thumb_.jpeg

Вот мой код, который я пытаюсь:

public static String imgUpload(String url, List<NameValuePair> list, List<String> images){ 

     String result = Constants.EMPTY; 
     Bitmap bm; 

     HttpParams httpParams = new BasicHttpParams(); 
     HttpConnectionParams.setConnectionTimeout(httpParams, ServiceConstant.TIMEOUT_MILLISEC); 
     HttpConnectionParams.setSoTimeout(httpParams, ServiceConstant.TIMEOUT_MILLISEC); 

     HttpParams p = new BasicHttpParams(); 
     HttpClient httpclient = new DefaultHttpClient(p); 


     HttpPost httppost = new HttpPost(url);   

     String resimYol = images.get(0); 
     resimYol = resimYol.replace("file:///", "/"); 
     bm = BitmapFactory.decodeFile(resimYol); 
     Log.d("RESIL_YOL", resimYol.toString()); 


     try{       


      ByteArrayBody bab = new ByteArrayBody(b, resimYol); 


      ResponseHandler<String> responseHandler = new BasicResponseHandler(); 

      ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
      bm.compress(CompressFormat.JPEG, 100, bos); 
      byte[] data = bos.toByteArray();    

      ByteArrayBody bab = new ByteArrayBody(data, resimYol); 


      MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
      httppost.setEntity(reqEntity);  
     result = httpclient.execute(httppost,responseHandler); 

     } 

     catch (Exception e) { 
       // handle exception here 
       Log.e(e.getClass().getName(), e.getMessage()); 
      } 
     return result; 
    } 

Вот мой LogCat:

02-12 11:43:07.467: E/org.apache.http.client.HttpResponseException(19112): Bad Request 
+0

не могли бы вы поставить лог-кошку? –

+1

Хорошо, я ставлю логарифм. –

+0

Плохой запрос - это сервер, говорящий, что ему не нравится что-то в вашем POST. Проверьте, нет ли чего-то с сервером, который не хочет получать запрос. –

ответ

0
public static String __imgUpload(String url, List<NameValuePair> list, List<String> images) 
    { 
     URL url1=null; 
     HttpURLConnection conn = null; 
     DataOutputStream dos = null; 
     DataInputStream inStream = null; 
     String existingFileName= null; 

      String urlServer = url; 
      String lineEnd = "\r\n"; 
      String twoHyphens = "--"; 
      String boundary = "*****"; 
      String str = null; 

     int bytesRead, bytesAvailable, bufferSize; 
     byte[] buffer; 
     int maxBufferSize = Integer.MAX_VALUE; 
     String responseFromServer = ""; 


      try { 
      url1 = new URL(url); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     }     

      for(int resimID=0;resimID<images.size();resimID++) 
      { 
      existingFileName= images.get(resimID); 
      existingFileName = existingFileName.replace("file:///", "/"); 

      try 
      { 
      FileInputStream fileInputStream = new FileInputStream(new File(existingFileName)); 


       conn = (HttpURLConnection) url1.openConnection(); 

       conn.setDoInput(true); 

       conn.setDoOutput(true); 

       conn.setUseCaches(false); 

       conn.setRequestMethod("POST"); 
       conn.setRequestProperty("Connection", "Keep-Alive"); 
       conn.setRequestProperty("Content-Type", "application/stream"); 
       dos = new DataOutputStream(conn.getOutputStream()); 

       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       buffer = new byte[bufferSize]; 
       // read file and write it into form... 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
       while (bytesRead > 0) 
       { 
       dos.write(buffer, 0, bufferSize); 
       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

       } 

       dos.writeBytes(lineEnd); 


       // close streams 
       Log.e("Debug",twoHyphens + boundary + twoHyphens + lineEnd); 
       fileInputStream.close(); 
       dos.flush(); 
       dos.close(); 
      } 
      catch (MalformedURLException ex) 
      { 
        Log.e("Debug", "error 1: " + ex.getMessage(), ex); 
      } 
      catch (IOException ioe) 
      { 
        Log.e("Debug", "error 2: " + ioe.getMessage(), ioe); 
      } 

      try { 
        inStream = new DataInputStream (conn.getInputStream()); 


        while ((str = inStream.readLine()) != null) 
        { 
         Log.e("Debug","Server Response "+str); 
        } 
        inStream.close(); 

      } 
      catch (IOException ioex){ 
        Log.e("Debug", "error 3: " + ioex.getMessage(), ioex); 
      } 
      } 

      return str; 
    } 

Этот код определенно работает.

0

попробуйте этот пример Link это может быть вам полезно.

и добавить все файлы jar, необходимые для этого.

+0

Хорошо, я попробую, но нет таких параметров, как тип или данные на .net webService. Так что я не знаю, как загрузить фото? –

+0

ваши параметры похожи на список . –

+0

Переменная списка отличается. Я использую переменную images для изображений. –

0

Попробуйте преобразовать image в Base64, а затем отправьте свой ответ String в качестве параметра для веб-службы, чтобы сделать успешную отправку на сервер.

+0

как параметр? image = fasfosdsd.jpg или что-то в этом роде? Но на стороне сервера нет никаких параметров. –

+0

Хорошо. Что именно сервер просит отправить изображение? Я имею в виду, что вам нужно напрямую отправлять JPG-файл или сначала преобразовывать его в каком-то формате? – Harpreet

+0

Серверу нужен файл изображения в байтовом формате. –

Смежные вопросы