title: Is it possible to send @Fields with multipart in retrofit2?
body: <p>I'm using retrofit2, i was sending data through it using @FormUrlEncoded because everything was as a string even images but i faced some errors when i send collection of images as strings, so i changes to multipart.</p>
  
  <p>Now i'm facing problem that i can't send @Field of string with multipart.</p>
  
  <p>So, how i can solve this problem without using RequestBody for every string?</p>
  
  <p>here's my code</p>
  
  <pre><code>@Multipart
  @POST("/androidfiles/insertNews.php")
  Call&lt;ResponseBody&gt; uploadImage(@Part MultipartBody.Part file, @Part("name") RequestBody name,
                                 @Field("tArabic") String arabicTitle,
                                 @Field("tEnglish") String englishTitle,
                                 @Field("tRussian") String russianTitle,
                                 @Field("tItalian") String italianTitle,
                                 @Field("dArabic") String arabicDescription,
                                 @Field("dEnglish") String englishDescription,
                                 @Field("dRussian") String russianDescription,
                                 @Field("dItalian") String italianDescription);
  </code></pre>
  
  <p>and here.</p>
  
  <pre><code>private void insertNews(Uri uri){
  
      Retrofit retrofit = new Retrofit.Builder()
              .baseUrl(ServiceConstants.URL)
              .build();
  
  
      File file = FileUtil.getFile(this, uri);
  
      RequestBody mFile = RequestBody.create(MediaType.parse("image/*"), file);
      MultipartBody.Part fileToUpload = MultipartBody.Part.createFormData("file", file.getName(), mFile);
      RequestBody filename = RequestBody.create(MediaType.parse("text/plain"), file.getName());
  
      ApiConfig apiConfig = retrofit.create(ApiConfig.class);
  
      Call&lt;ResponseBody&gt; addNews = apiConfig.uploadImage(fileToUpload,
              filename,
              etArabicTitle.getText().toString(),
              etEnglishTitle.getText().toString(),
              etRussianTitle.getText().toString(),
              etItalianTitle.getText().toString(),
              etArabicDescription.getText().toString(),
              etEnglishDescription.getText().toString(),
              etRussianDescription.getText().toString(),
              etItalianDescription.getText().toString());
  
      addNews.enqueue(new Callback&lt;ResponseBody&gt;() {
          @Override
          public void onResponse(Call&lt;ResponseBody&gt; call, Response&lt;ResponseBody&gt; response) {
              Toast.makeText(News.this, "success" + "\n" + response.message(), Toast.LENGTH_SHORT).show();
              Intent intent = new Intent(News.this,Menu.class);
              startActivity(intent);
          }
  
          @Override
          public void onFailure(Call&lt;ResponseBody&gt; call, Throwable t) {
              Toast.makeText(News.this, "fail" + t.getMessage(), Toast.LENGTH_SHORT).show();
              t.printStackTrace();
          }
      });
  
  }
  </code></pre>