2016-05-02 3 views
1

ローカルのギャラリー画像をapiに送信します。私はその画像をマルチパート型のファイルとして追加しました。また、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(); 
       } 

インターフェイスメソッドのAPI側で

/** 
* @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

ですから、各パラメータを1つずつ送信する必要があります。このMultipartのようなイメージ値を送るための例を教えてください。 MultipartTypedOutput multipartTypedOutput = new MultipartTypedOutput(); multipartTypedOutput.addPart(Constants.LOGO_IMAGE、新しいTypedFile( "image/*"、新しいファイル( "+ encodedByte))); –

+0

'Uri pics = Uri.fromFile(新しいファイル(最終パス)); ビットマップbitmap1 = decodeBitmap(pics、finalPath); ByteArrayOutputStream byteArrayOutputStream1 =新しい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を取り出して、それは私がサーバーに

enter image description hereを送信しようとしていた何

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

を働いた同じエラーが発生しました

関連する問題