Java 类retrofit2.http.Part 实例源码

项目:GitHub    文件:RequestBuilderTest.java   
@Test public void bodyInNonBodyRequest() {
  class Example {
    @Multipart //
    @PUT("/") //
    Call<ResponseBody> method(@Part("one") String o1, @Body String o2) {
      return null;
    }
  }
  try {
    buildRequest(Example.class);
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Body parameters cannot be used with form or multi-part encoding. (parameter #2)\n    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartRequiresName() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part RequestBody part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part annotation must supply a name or use MultipartBody.Part parameter type. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartOkHttpPartForbidsName() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("name") MultipartBody.Part part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part parameters using the MultipartBody.Part must not include a part name in the annotation. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartArrayOkHttpPart() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") MultipartBody.Part[] part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part parameters using the MultipartBody.Part must not include a part name in the annotation. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartPartMapRejectsOkHttpPartValues() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@PartMap Map<String, MultipartBody.Part> parts) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@PartMap values cannot be MultipartBody.Part. Use @Part List<Part> or a different value type instead. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void bodyInNonBodyRequest() {
  class Example {
    @Multipart //
    @PUT("/") //
    Call<ResponseBody> method(@Part("one") String o1, @Body String o2) {
      return null;
    }
  }
  try {
    buildRequest(Example.class);
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Body parameters cannot be used with form or multi-part encoding. (parameter #2)\n    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartRequiresName() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part RequestBody part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part annotation must supply a name or use MultipartBody.Part parameter type. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartIterableRequiresName() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part List<RequestBody> part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part annotation must supply a name or use MultipartBody.Part parameter type. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartOkHttpPartForbidsName() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("name") MultipartBody.Part part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part parameters using the MultipartBody.Part must not include a part name in the annotation. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartIterableOkHttpPart() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") List<MultipartBody.Part> part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part parameters using the MultipartBody.Part must not include a part name in the annotation. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartArrayOkHttpPart() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") MultipartBody.Part[] part) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part parameters using the MultipartBody.Part must not include a part name in the annotation. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartPartMapRejectsOkHttpPartValues() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@PartMap Map<String, MultipartBody.Part> parts) {
      return null;
    }
  }

  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@PartMap values cannot be MultipartBody.Part. Use @Part List<Part> or a different value type instead. (parameter #1)\n"
            + "    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartNullRemovesPart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") String ping, @Part("fizz") String fizz) {
      return null;
    }
  }
  Request request = buildRequest(Example.class, "pong", null);
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"")
      .contains("\r\npong\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartPartsShouldBeInOrder() throws IOException {
  class Example {
    @Multipart
    @POST("/foo")
    Call<ResponseBody> get(@Part("first") String data, @Part("second") String dataTwo, @Part("third") String dataThree) {
      return null;
    }
  }
  Request request = buildRequest(Example.class, "firstParam", "secondParam", "thirdParam");
  MultipartBody body = (MultipartBody) request.body();

  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String readBody = buffer.readUtf8();

  assertThat(readBody.indexOf("firstParam")).isLessThan(readBody.indexOf("secondParam"));
  assertThat(readBody.indexOf("secondParam")).isLessThan(readBody.indexOf("thirdParam"));
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void implicitMultipartForbidden() {
  class Example {
    @POST("/") //
    Call<ResponseBody> method(@Part("a") int a) {
      return null;
    }
  }
  try {
    buildRequest(Example.class);
    fail();
  } catch (IllegalArgumentException e) {
    assertThat(e).hasMessage(
        "@Part parameters can only be used with multipart encoding. (parameter #1)\n    for method Example.method");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void simpleMultipart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") String ping, @Part("kit") RequestBody kit) {
      return null;
    }
  }

  Request request = buildRequest(Example.class, "pong", RequestBody.create(
      MediaType.parse("text/plain"), "kat"));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("\r\npong\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartArray() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") String[] ping) {
      return null;
    }
  }

  Request request =
      buildRequest(Example.class, new Object[] { new String[] { "pong1", "pong2" } });
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("\r\npong1\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"")
      .contains("\r\npong2\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartOkHttpIterablePart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part List<MultipartBody.Part> part) {
      return null;
    }
  }

  MultipartBody.Part part1 = MultipartBody.Part.createFormData("foo", "bar");
  MultipartBody.Part part2 = MultipartBody.Part.createFormData("kit", "kat");
  Request request = buildRequest(Example.class, Arrays.asList(part1, part2));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"foo\"\r\n")
      .contains("\r\nbar\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"\r\n")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartOkHttpArrayPart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part MultipartBody.Part[] part) {
      return null;
    }
  }

  MultipartBody.Part part1 = MultipartBody.Part.createFormData("foo", "bar");
  MultipartBody.Part part2 = MultipartBody.Part.createFormData("kit", "kat");
  Request request =
      buildRequest(Example.class, new Object[] { new MultipartBody.Part[] { part1, part2 } });
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"foo\"\r\n")
      .contains("\r\nbar\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"\r\n")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartIterable() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") List<String> ping) {
      return null;
    }
  }

  Request request = buildRequest(Example.class, Arrays.asList("pong1", "pong2"));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("\r\npong1\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"")
      .contains("\r\npong2\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartWithEncoding() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part(value = "ping", encoding = "8-bit") String ping,
        @Part(value = "kit", encoding = "7-bit") RequestBody kit) {
      return null;
    }
  }

  Request request = buildRequest(Example.class, "pong", RequestBody.create(
      MediaType.parse("text/plain"), "kat"));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("Content-Transfer-Encoding: 8-bit")
      .contains("\r\npong\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"")
      .contains("Content-Transfer-Encoding: 7-bit")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartPartOptional() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") RequestBody ping) {
      return null;
    }
  }
  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalStateException e) {
    assertThat(e.getMessage()).isEqualTo("Multipart body must have at least one part.");
  }
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void simpleMultipart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") String ping, @Part("kit") RequestBody kit) {
      return null;
    }
  }

  Request request = buildRequest(Example.class, "pong", RequestBody.create(
      MediaType.parse("text/plain"), "kat"));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("\r\npong\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartArray() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") String[] ping) {
      return null;
    }
  }

  Request request =
      buildRequest(Example.class, new Object[] { new String[] { "pong1", "pong2" } });
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("\r\npong1\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"")
      .contains("\r\npong2\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartOkHttpIterablePart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part List<MultipartBody.Part> part) {
      return null;
    }
  }

  MultipartBody.Part part1 = MultipartBody.Part.createFormData("foo", "bar");
  MultipartBody.Part part2 = MultipartBody.Part.createFormData("kit", "kat");
  Request request = buildRequest(Example.class, Arrays.asList(part1, part2));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"foo\"\r\n")
      .contains("\r\nbar\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"\r\n")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartOkHttpArrayPart() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part MultipartBody.Part[] part) {
      return null;
    }
  }

  MultipartBody.Part part1 = MultipartBody.Part.createFormData("foo", "bar");
  MultipartBody.Part part2 = MultipartBody.Part.createFormData("kit", "kat");
  Request request =
      buildRequest(Example.class, new Object[] { new MultipartBody.Part[] { part1, part2 } });
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"foo\"\r\n")
      .contains("\r\nbar\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"\r\n")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartIterable() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") List<String> ping) {
      return null;
    }
  }

  Request request = buildRequest(Example.class, Arrays.asList("pong1", "pong2"));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("\r\npong1\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"")
      .contains("\r\npong2\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartWithEncoding() throws IOException {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part(value = "ping", encoding = "8-bit") String ping,
        @Part(value = "kit", encoding = "7-bit") RequestBody kit) {
      return null;
    }
  }

  Request request = buildRequest(Example.class, "pong", RequestBody.create(
      MediaType.parse("text/plain"), "kat"));
  assertThat(request.method()).isEqualTo("POST");
  assertThat(request.headers().size()).isZero();
  assertThat(request.url().toString()).isEqualTo("http://example.com/foo/bar/");

  RequestBody body = request.body();
  Buffer buffer = new Buffer();
  body.writeTo(buffer);
  String bodyString = buffer.readUtf8();

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"ping\"\r\n")
      .contains("Content-Transfer-Encoding: 8-bit")
      .contains("\r\npong\r\n--");

  assertThat(bodyString)
      .contains("Content-Disposition: form-data;")
      .contains("name=\"kit\"")
      .contains("Content-Transfer-Encoding: 7-bit")
      .contains("\r\nkat\r\n--");
}
项目:GitHub    文件:RequestBuilderTest.java   
@Test public void multipartPartOptional() {
  class Example {
    @Multipart //
    @POST("/foo/bar/") //
    Call<ResponseBody> method(@Part("ping") RequestBody ping) {
      return null;
    }
  }
  try {
    buildRequest(Example.class, new Object[] { null });
    fail();
  } catch (IllegalStateException e) {
    assertThat(e.getMessage()).isEqualTo("Multipart body must have at least one part.");
  }
}
项目:EvolvingNetLib    文件:CCNetApiService.java   
/**
 * 上传文件
 * @param url
 * @param headerMap
 * @param paramPartList
 * @return
 */
@Multipart
@POST
Call<ResponseBody> executeUpload(
        @Url String url,
        @HeaderMap Map<String, String> headerMap,
        @Part() List<MultipartBody.Part> paramPartList
);
项目:Renrentou    文件:RegService.java   
@POST("user/regist/person")
@Multipart
Flowable<ResponseDto<User>> regPerson(
        @PartMap Map<String, RequestBody> param,
        @Part MultipartBody.Part front,
        @Part MultipartBody.Part back
);
项目:Renrentou    文件:AdService.java   
@POST("ad/new")
@Multipart
Flowable<ResponseDto<User>> add(
        @PartMap Map<String, RequestBody> param,
        @Part MultipartBody.Part adFile,
        @Part MultipartBody.Part coverFile
);
项目:Bigbang    文件:OcrService.java   
@Headers({
        "User-Agent: Mozilla/5.0",
        "accept-language:zh-CN,zh;q=0.8"
})
@Multipart// 参数的类型都应该是RequestBody,不然上传的图片的时候会报JSON must start with an array or an object错误
@POST("parse/image/")
Observable<OcrItem> uploadImage(@Part("apikey")String key , @Part("fileName") String description,
                         @Part("file\"; filename=\"image.png\"") RequestBody imgs);
项目:retrofit-rxjava-request-with-progress    文件:Api.java   
@Multipart
@POST("pictureup/uploadshitu")
Observable<ProgressBean<String>> uploadPic(
        @Part("pos") String pos,
        @Part("uptype") String uptype,
        @Part("fm") String index,
        @Part("image\"; filename=\"xxx.jpg") File image
);
项目:Plamber-Android    文件:PlamberAPI.java   
@Multipart
@POST("api/v1/upload-book/")
Call<Upload.UploadBookRespond> uploadFile(@Part("user_token") RequestBody userToken,
                                          @Part("book_name") RequestBody bookName,
                                          @Part("author") RequestBody authorName,
                                          @Part("category") RequestBody categoryName,
                                          @Part("about") RequestBody aboutBook,
                                          @Part("language") RequestBody languageBook,
                                          @Part("private_book") boolean private_book,
                                          @Part MultipartBody.Part file,
                                          @Part MultipartBody.Part cover);
项目:richeditor    文件:UploadHelper.java   
public static MultipartBody.Part generateMultiPart(String parName,File file,RequestBodyWrapper uploadFileRequestBody){
    return MultipartBody.Part.createFormData(parName, file.getName(),uploadFileRequestBody);
}
项目:ForeverLibrary    文件:API.java   
@Multipart
@POST("api/upload/android")
Observable<BasicResponse<List<UploadModel>>> uploadFile(@Part("pic\"; filename=\"image1.png") RequestBody file);
项目:richeditor    文件:UploadHelper.java   
@Multipart
@POST
Observable<ResponseBody> uploadFile(@Url String url, @Part MultipartBody.Part file);
项目:android-retrofit-image-upload    文件:RetrofitInterface.java   
@Multipart
@POST("/images/upload")
Call<Response> uploadImage(@Part MultipartBody.Part image);
项目:Bing    文件:RestService.java   
@Multipart
@POST
Call<String> upload(@Url String url, @Part MultipartBody.Part file);