2016-05-02 1 views
1

Я хочу отправить изображение локальной галереи в api. Я добавил, что изображения в виде multipart typedfile и iam также отправляют некоторые строковые данные в один и тот же api, как многострочная строка с типом.Параметры дооснащения - @Body нельзя использовать с формой или многочастным кодированием. (параметр # 1)

Так что, когда я ударил api, я получил этот ответ.

@ Параметры Body не могут использоваться с формой или многочастным кодированием. (Параметр # 1)

Мой код:

   //Add the values into Multipart. 
       MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput(); 
       //Add the ACCESS_TOKEN 
       //MULTIPLEIMAGE 
       multipartTypedOutput.addPart(Constants.LOGO_IMAGE, new TypedFile("image/*", new File("" + encodedByte))); 
       //Add the ACCESS_TOKEN 
       multipartTypedOutput.addPart(Constants.COMPANY_NAME, new TypedString(companyName)); 
       multipartTypedOutput.addPart(Constants.TAGS, new TypedString(projectTags)); 
       multipartTypedOutput.addPart(Constants.PROJECT_DESC, new TypedString(projectDesc)); 
       multipartTypedOutput.addPart(Constants.CATEGORY, new TypedString(categories)); 
       multipartTypedOutput.addPart(Constants.STYLE, new TypedString(launchStyle)); 
       multipartTypedOutput.addPart(Constants.COLOR_CODE, new TypedString(colorCode)); 
       multipartTypedOutput.addPart(Constants.CONTEST_PACK, new TypedString(contestPackage)); 
       multipartTypedOutput.addPart(Constants.PAYMENT_GATE, new TypedString(paymentGateway)); 
       multipartTypedOutput.addPart(Constants.USERID, new TypedString(userId)); 
       if (connectionDetector.isOnline()) { 
        apiManager.getApiService().launchApi(multipartTypedOutput, new LaunchCallback(LaunchStep4Fragment.this)); 
       } else { 
        Toast.makeText(getActivity(), getString(R.string.check_internet), Toast.LENGTH_SHORT).show(); 
       } 

метод интерфейса

/** 
* @param multipartTypedOutput 
* @param callback 
*/ 
@FormUrlEncoded 
@POST(Constants.STORE_CONTEST) 
void launchApi(@Body MultipartTypedOutput multipartTypedOutput , Callback<LaunchResponse> callback); 

В стороне апи, они получают все в виде строки. Так зависит ли это от типа параметра или проблемы с кодом?

Что я должен изменить, чтобы получить результат?

Пожалуйста, может кто-нибудь объяснить мне, если я сделаю что-то неправильно.

ответ

1

Использование дооснащения 2

@Headers({ 
     "Accept: application/json", 
}) 
@Multipart 
@POST("upload") 
Call<ResponseBody> uploadImage(@Part("picture\"; filename=\"picture") RequestBody picture, @Part("company_name") RequestBody company_name); 
+0

Итак, я должен отправлять каждый параметр по одному. вы можете дать мне пример для отправки значения изображения, подобного этому многопунктовому. MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput(); multipartTypedOutput.addPart (Constants.LOGO_IMAGE, новый TypedFile ("image/*", новый файл ("" + encodedByte))); –

+0

'Uri pics = Uri.fromFile (новый файл (finalPath)); Bitmap bitmap1 = decodeBitmap (pics, finalPath); ByteArrayOutputStream byteArrayOutputStream1 = new ByteArrayOutputStream(); bitmap1.compress (Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream1); RequestBody fbody = RequestBody.create (MediaType.parse ("multipart/form-data"), byteArrayOutputStream1.toByteArray()); RequestBody name = RequestBody.create (MediaType.parse ("text/plain"), название компании); ' – yozzy

0

Попытка удалить @FormUrlEncoded я имел ту же ошибку я удалил @FormUrlEncoded и работал

//@FormUrlEncoded 
    @POST("saveOgrYoklama") 
    Call<YoklamaStatus> sendYoklamaList2(@Body Yoklama yoklama); 

То, что я пытался отправить на сервер

enter image description here

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