gpt4 book ai didi

java - 如何在 Apache HttpPost 中一起发布多种类型的参数

转载 作者:行者123 更新时间:2023-12-01 04:42:17 24 4
gpt4 key购买 nike

我的代码遇到一些奇怪的问题。我正在使用org.apache.http.entity.mime.MultipartEntity类将文件实体提交到服务器,以便我可以上传文件。但是当我尝试添加另一个实体/参数时,它的值无法通过 HttpServletRequest 捕获。 。下面是我发送成功的文件上传请求的客户端工作代码:

public class TestClass 
{
public static void main(String args[]) throws ConfigurationException, ParseException, ClientProtocolException, IOException
{
HttpClient client = new DefaultHttpClient();
client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpPost post = new HttpPost("http://localhost:9090/HostImages/ImageUploaderServlet");
MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
entity.addPart( "file", new FileBody(new File("D:/tempImage/cat_image.jpg") ));
post.setEntity(entity);
String response = EntityUtils.toString( client.execute( post ).getEntity(), "UTF-8" );
client.getConnectionManager().shutdown();
}
}

在服务器端,即 ImageUploaderServlet 内部我正在解析 request HttpServletRequest 的对象如下:


FileItemFactory fileItemFactory = new DiskFileItemFactory();<br/>
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory);
List fileItems = servletFileUpload.parseRequest(request);
它给了我通过客户端提交的文件列表,绝对工作正常。

当我尝试使用 MultipartEntity 添加另一个实体时出现问题或通过 HttpParams我无法在服务器端获取它的值。我已经经历过this question already posted但没有帮助。 (我尝试添加另一个实体作为StringBody,如下所示:)

entity.addPart("flag", new StringBody("true"));

我想在客户端添加一些额外的参数,以便我可以在服务器端使用它来达到我的目的。附加参数可以是 String、int 或 byte。我不知道确切的问题出在哪里,客户端还是服务器端!请帮忙。

最佳答案

多部分请求需要特别注意。这是一个有用的链接,可以帮助您了解如何处理这些情况:

Convenient way to parse incoming multipart/form-data parameters in a Servlet

问候

关于java - 如何在 Apache HttpPost 中一起发布多种类型的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16340692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com