2014-11-26 4 views
0

Я пытаюсь отправить изображение на веб-службу, используя HttpPost. Проблема в том, когда я пытаюсь отправить изображение, возвратить ошибку, которая не найдена, но изображение существует. Я выбрал это в галерее.Отправка файла с помощью HttpPost?

Как я могу это решить?

Вот как я пытаюсь

public Boolean insert(Usuario u, String fotoPath){ 
    HttpClient httpClient = new DefaultHttpClient();   
    HttpPost httppost = new HttpPost(urlPost.toString()); 

    try { 
     File img = new File(fotoPath, ConvertStringToMD5.getMD5(u.getEmail().split("@")[0])); 
     httppost.addHeader("Authorization", "Basic " + BasicAuthenticationRest.getBasicAuthentication()); 
     MultipartEntity me = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
     me.addPart("nome", new StringBody(u.getNome())); 
     me.addPart("email", new StringBody(u.getEmail())); 
     me.addPart("senha", new StringBody(ConvertStringToMD5.getMD5(u.getSenha()))); 
     me.addPart("device_tipo", new StringBody("android")); 
     me.addPart("device", new StringBody(AndroidReturnId.getAndroidId())); 
     me.addPart("uploadedfile", new FileBody(img, "image/png"));   
     httppost.setEntity(me); 

     HttpResponse response = httpClient.execute(httppost); 
     HttpEntity entity = response.getEntity(); 
     if(entity != null){ 
       String js = EntityUtils.toString(entity); 
       Log.i("JSON: ", js); 
       JSONObject json = new JSONObject(js); 
       if(json.getString("cod").equals("999")){ 
        return true; 
       }     
     } 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return false; 
} 

LogCat

11-26 09:53:01.945: D/ProgressBar(3673): setProgress = 0 
11-26 09:53:01.945: D/ProgressBar(3673): setProgress = 0, fromUser = false 
11-26 09:53:01.945: D/ProgressBar(3673): mProgress = 0mIndeterminate = false, mMin = 0, mMax = 10000 
11-26 09:53:02.010: D/dalvikvm(3673): GC_FOR_ALLOC freed 166K, 18% free 17240K/20992K, paused 20ms, total 20ms 
11-26 09:53:02.040: I/Path Foto:(3673): /storage/emulated/0/InstaSize.png 
11-26 09:53:02.085: D/dalvikvm(3673): DexOpt: couldn't find static field Lorg/apache/http/message/BasicHeaderValueParser;.INSTANCE 
11-26 09:53:02.085: W/dalvikvm(3673): VFY: unable to resolve static field 6632 (INSTANCE) in Lorg/apache/http/message/BasicHeaderValueParser; 
11-26 09:53:02.085: D/dalvikvm(3673): VFY: replacing opcode 0x62 at 0x001b 
11-26 09:53:02.090: D/dalvikvm(3673): DexOpt: couldn't find static field Lorg/apache/http/message/BasicHeaderValueFormatter;.INSTANCE 
11-26 09:53:02.090: W/dalvikvm(3673): VFY: unable to resolve static field 6626 (INSTANCE) in Lorg/apache/http/message/BasicHeaderValueFormatter; 
11-26 09:53:02.090: D/dalvikvm(3673): VFY: replacing opcode 0x62 at 0x0015 
11-26 09:53:02.090: D/ProgressBar(3673): updateDrawableBounds: left = 0 
11-26 09:53:02.090: D/ProgressBar(3673): updateDrawableBounds: top = 0 
11-26 09:53:02.090: D/ProgressBar(3673): updateDrawableBounds: right = 96 
11-26 09:53:02.090: D/ProgressBar(3673): updateDrawableBounds: bottom = 96 
11-26 09:53:02.205: E/ViewRootImpl(3673): sendUserActionEvent() mView == null 
+0

вы могли бы разместить LogCat? –

+1

@AndresCardenasPardo Я отправил логарифм! – FernandoPaiva

ответ

3

Вы можете отправить либо NameValuePair или MultipartEntity в то время ...

Когда вы работаете с HttpPost , вы можете отправить параметры по методу setEntity() .. таких методов нет ка appendEntity() или несколько .. так что вы должны установить параметры сразу ..

Вы не можете отправить paramters в обоих NameValuePair и MultipartEntity в то время .. Вы должны выбрать один из них ..

Поэтому в вашем коде вы отправляете параметры только с NameValuePair. вы создаете MultipartEntity параметр для изображения, но вы не посылаете его HTTPPost ...

Попробуйте этот способ .. это может помочь вам ..

try { 
    httppost.addHeader("Authorization", "Basic " + BasicAuthenticationRest.getBasicAuthentication()); 

    MultipartEntity me = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);   

    me.addPart("nome", new StringBody(getNome())); // to send string params 
    me.addPart("email", new StringBody(u.getEmail())); 
    //other parameters 

    //creating image/file parameter to send 
    me.addPart("uploadedfile",new FileBody(new File(fotoPath))); // file parameter 

    //setting entity to HTTPPost 
    if(me!=null){ 
    //avoiding NullPointerException 
    httppost.setEntity(new UrlEncodedFormEntity(me)); // sending MultipartEntity as entity 
    } 

    //getting response 
    HttpResponse response = httpClient.execute(httppost); 
    HttpEntity entity = response.getEntity();    
    if(entity != null){ 
      String js = EntityUtils.toString(entity); 
      Log.i("JSON: ", js); 
      JSONObject json = new JSONObject(js); 
      if(json.getString("cod").equals("999")){ 
       return true; 
      }     
    } 
} catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

Я отредактировал сообщение с вашим предложением. Теперь не возвращает исключение JSON из веб-службы и не добавляет пользователя и изображение. – FernandoPaiva

+1

проверить свой код PHP .. проверьте, что вы получаете там paremeters –

+0

wow, сетевой администратор сети, связанный с этим, останавливается, потому что проблема. Он пытается решить. Я думаю, проблема в этом! – FernandoPaiva