首页 > 解决方案 > Apache Commons HTTPClient 在 POST 请求中上传文件以及参数

问题描述

我一直在谷歌上搜索这个,但我能找到的只是过时的信息和不起作用的东西。

我已经尝试过 MultipartRequestEntities 和一切,但它们似乎没有正确设置参数。我已经运行了我的调试器,似乎正在发生的事情是当为文件设置请求实体时,它会覆盖参数,即使我将 getParams() 与 MultipartRequestEntity 一起使用。当我发现它正在这样做时,我尝试使用 FileRequestEntity 并通过在之后添加参数来翻转它,但所做的只是添加参数但由于某种原因删除了请求实体。

我正在尝试用 Java 编写 ShareX 的替代方案,因为我有 Windows 用户想要将 ShareX 与我的文件上传服务一起使用,而我有 Mac/Linux 用户对他们无法使用 ShareX 感到不安,因为它不可用他们的平台。

这是发生问题的代码:

PostMethod postMethod = new PostMethod(cnf.url);
System.out.println(postMethod.getParams().getParameter("uname"));
postMethod.setRequestEntity(new FileRequestEntity(fileToUpload, fileToUpload.getName()));
postMethod.addParameter("uname", cnf.uname);
postMethod.addParameter("api_key", cnf.api_key);
System.out.println(postMethod.toString());
httpClient.executeMethod(postMethod);
System.out.println("Response String: " + postMethod.getResponseBodyAsString());

所以希望我能得到这个答案。它正在驱使我绕弯。

标签: javahttppostfile-uploadapache-commons-httpclient

解决方案


推荐阅读