PostFormBuilder.java 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package okhttp.builder;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.LinkedHashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import okhttp.request.PostFormRequest;
  8. import okhttp.request.RequestCall;
  9. /**
  10. * Created by zhy on 15/12/14.
  11. */
  12. public class PostFormBuilder extends OkHttpRequestBuilder<PostFormBuilder> implements HasParamsable
  13. {
  14. private List<FileInput> files = new ArrayList<>();
  15. @Override
  16. public RequestCall build()
  17. {
  18. return new PostFormRequest(url, tag, params, headers, files,id).build();
  19. }
  20. public PostFormBuilder files(String key, Map<String, File> files)
  21. {
  22. for (String filename : files.keySet())
  23. {
  24. this.files.add(new FileInput(key, filename, files.get(filename)));
  25. }
  26. return this;
  27. }
  28. public PostFormBuilder addFile(String name, String filename, File file)
  29. {
  30. files.add(new FileInput(name, filename, file));
  31. return this;
  32. }
  33. public static class FileInput
  34. {
  35. public String key;
  36. public String filename;
  37. public File file;
  38. public FileInput(String name, String filename, File file)
  39. {
  40. this.key = name;
  41. this.filename = filename;
  42. this.file = file;
  43. }
  44. @Override
  45. public String toString()
  46. {
  47. return "FileInput{" +
  48. "key='" + key + '\'' +
  49. ", filename='" + filename + '\'' +
  50. ", file=" + file +
  51. '}';
  52. }
  53. }
  54. @Override
  55. public PostFormBuilder params(Map<String, String> params)
  56. {
  57. this.params = params;
  58. return this;
  59. }
  60. @Override
  61. public PostFormBuilder addParams(String key, String val)
  62. {
  63. if (this.params == null)
  64. {
  65. params = new LinkedHashMap<>();
  66. }
  67. params.put(key, val);
  68. return this;
  69. }
  70. }