改进POST请求Multipart和Field

时间:2016-11-06 12:06:02

标签: java android retrofit retrofit2 microsoft-cognitive

> https://api.projectoxford.ai/spid/v1.0/identify?identificationProfileIds= {identificationProfileIds} [&安培; shortAudio]

  

这是我想要达到的终点。

     

Params identificationProdileIds ===>字符串

     

shortAudio ===>布尔值(可选)

     

标题

     

API_Key ===>字符串

     

内容类型===>字符串(可选)

请问我几乎不知道如何提出请求但是它没有提出错误请求

这是我的界面方法

@Headers("Ocp-Apim-Subscription-Key: 7615c603bcd644cf8a9cd2d8d6cf73c6")
@Multipart
@POST("identify")
Call<ResponseBody> identifySpeaker (@Part MultipartBody.Part file, @Part("identificationProfileId") RequestBody profileIds);

这种类型的输入我稍后在创建实例时传递给它

byte[] audioData = prepareAudioData(mRecordFilePath);
    RequestBody requestFile =    RequestBody.create(MediaType.parse("application/octet-stream"), audioData);
    MultipartBody.Part body = MultipartBody.Part.create(requestFile);

RequestBody profiles = RequestBody.create(MediaType.parse("text/plain"), profiles_list);

adapter.identifyProfile(body,profiles).enqueue   and so on....

在我有这样的POST请求之前我已成功完成但是那个时候没有params 但是这个终点我必须应用params

这是改装的记录

Logging the response

1 个答案:

答案 0 :(得分:1)

我认为您需要@Query,而不是@Part

@Headers("Ocp-Apim-Subscription-Key: ...")
@Multipart
@POST("identify")
Call<ResponseBody> identifySpeaker (
    @Part MultipartBody.Part file,
    @Query("identificationProfileId") RequestBody profileIds,
    @Query("shortAudio") boolean shortAudio)