2016-12-15 17 views
0

這裏是我用來上傳圖像到服務器的代碼。但它不像user_id發送正確的值,以便它顯示我錯誤的結果。當我在鉻上打api時,它工作的很好,它給出了正確的結果。我是用代碼上傳圖片:改裝不能發送正確的值到服務器

@Multipart 
@POST("/queli_technologies/index.php/Webservice") 
Call<EditProfileResponse> editProfile(@Part("u_id") String firstname, 
            @Part("f_name") String lastname, 
            @Part("l_name") String email, 
            @Part("c_no") String password, 
            @Part MultipartBody.Part file, 
            @Part("edit_profile") String register); 

RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"),file); 
       MultipartBody.Part body = MultipartBody.Part.createFormData("upload", file.getName(), reqFile); 

       service = RetroClient.getApiService(); 


       Call<EditProfileResponse> responseCall = service.editProfile("44","Demo","android","0987654321",body,"edit_profile"); 

       responseCall.enqueue(new Callback<EditProfileResponse>() { 
        @Override 
        public void onResponse(Call<EditProfileResponse> call, Response<EditProfileResponse> response) { 
         if (response.isSuccessful()){ 
          EditProfileResponse res = response.body(); 
          Log.e("Response " , res.getStatus() + " message : " + res.getMessage()); 
          dialog.dismiss(); 
         } 
        } 

        @Override 
        public void onFailure(Call<EditProfileResponse> call, Throwable t) { 

        } 
       }); 

當我DONOT得到正確的結果我用這個:

@Multipart 
@POST("/queli_technologies/index.php/Webservice") 
Call<EditProfileResponse> editProfile(@Part("u_id") RequestBody userId, 
             @Part("f_name") RequestBody frstname, 
             @Part("l_name") RequestBody lastname, 
             @Part("c_no") RequestBody contctnum, 
             @Part MultipartBody.Part file, 
             @Part("edit_profile") RequestBody edit); 


    File file = new File(BaseActivity.basicImagePath); 
    RequestBody reqFile = RequestBody.create(MediaType.parse("image/*"), file); 
       MultipartBody.Part body = MultipartBody.Part.createFormData("upload", file.getName(), reqFile); 

       service = RetroClient.getApiService(); 
       String text = "31"; 
       RequestBody useridbody =RequestBody.create(MediaType.parse("text/plain"), text); 
       RequestBody fnbody =RequestBody.create(MediaType.parse("text/plain"), "Demo"); 
       RequestBody lnbody =RequestBody.create(MediaType.parse("text/plain"), "android"); 
       RequestBody conbody =RequestBody.create(MediaType.parse("text/plain"), "0987654321"); 
       RequestBody isbody =RequestBody.create(MediaType.parse("text/plain"), "edit_profile"); 

       Call<EditProfileResponse> responseCall = service.editProfile(useridbody,fnbody,lnbody,conbody,body,isbody); 

       responseCall.enqueue(new Callback<EditProfileResponse>() { 
        @Override 
        public void onResponse(Call<EditProfileResponse> call, Response<EditProfileResponse> response) { 
         if (response.isSuccessful()){ 
          EditProfileResponse res = response.body(); 
          Log.e("Response " , res.getStatus() + " message : " + res.getMessage()); 
          dialog.dismiss(); 
         } 
        } 

        @Override 
        public void onFailure(Call<EditProfileResponse> call, Throwable t) { 
         Log.e("Failure Response " , t +""); 
        } 
       }); 

靜止影像無法得到正確的結果。 Log中的Api響應在通過改進使用時給出{"status":"0","message":"User doesnot exist"}。並從 服務器它顯示{"status":"1","message":"User profile Updated"}

是這個改造問題或我的代碼問題?

回答

0

將文件移至最後。

@POST("/queli_technologies/index.php/Webservice") 
Call<EditProfileResponse> editProfile(@Part("u_id") String firstname, 
           @Part("f_name") String lastname, 
           @Part("l_name") String email, 
           @Part("c_no") String password,          
           @Part("edit_profile") String register, 
           @Part MultipartBody.Part file); 

我認爲,它應該工作。

+0

No Sir ..同樣的迴應'0消息:用戶不退出' –

+0

@PawandeepKaur:使用字符串而不是零件。請檢查服務器端代碼。 – zacharia

+0

如果我使用'String',那麼我怎樣才能用'@ Multipart'發送圖像? –