论httpclient上传带参数commons-httpclient和apache httpclient区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了论httpclient上传带参数commons-httpclient和apache httpclient区别相关的知识,希望对你有一定的参考价值。

需要做一个httpclient上传,然后啪啪啪网上找资料

1.首先以前系统中用到的了commons-httpclient上传,找了资料后一顿乱改,然后测试

		PostMethod filePost = new PostMethod(url);
		filePost.setParameter("system", "vinuxpost");
		try {
			Part part[] = UploadRequestHelper.getPart(request);
			filePost.setRequestEntity(new MultipartRequestEntity(part, filePost
					.getParams()));
			HttpClient client = new HttpClient();
			client.getHttpConnectionManager().getParams()
					.setConnectionTimeout(5000);
			int status = client.executeMethod(filePost);
			System.out.println(status);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

  其中一段主要代码,上传文件方式用的是byte方式,然后带上需要的参数,然后就遇到了一个奇怪的问题,就是参数过不来,然后去掉了上传文件的部分,参数就过来了,好奇怪,用了一下午,网上找资料还是没有解决,目前还没有解决!!!希望有人能告诉我,哈哈哈,也许可能是jar包版本的问题,我看网上好多资料都是可以带参数上传文件的。

希望大神能帮我解决上面的问题

 

2.然后接着apache httpclient上传,上代码

CloseableHttpClient httpClient = HttpClients.createDefault();
		HttpPost httpPost = new HttpPost(url);
		List<MultipartFile> listFile = UploadRequestHelper
				.getListMultipartFile(request);
		// 创建待处理的表单域内容文本
		StringBody system = new StringBody("vinuxpost");
		MultipartEntity reqEntity = new MultipartEntity();
		for (MultipartFile file : listFile) {
			ByteArrayBody bab = new ByteArrayBody(file.getBytes(),
					file.getName());
			reqEntity.addPart(file.getName(), bab);
		}
		reqEntity.addPart("system", system);
		httpPost.setEntity(reqEntity);
		CloseableHttpResponse response = httpClient.execute(httpPost);
		System.out.println("状态:" + response.getStatusLine());

  不出意外,成功了,可以继续下面的工作了,哈哈哈

 

总结,commons-httpclient和apache httpclient 的区别:

  首先commons-httpclient好像很少更新了,而且文档不是很充足,网上的例子很多都是重复的,apache httpclient 一直在更新,哈哈,资料比较多!!!

贴上apache httpclient maven 嘿嘿就这了

    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.3.3</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>4.2.1</version>
    </dependency>

需要 httpmime别忘了

以上是关于论httpclient上传带参数commons-httpclient和apache httpclient区别的主要内容,如果未能解决你的问题,请参考以下文章

httpclient如何带上参数

HttpClient 的GET(带参数)POST请求方式,工具类方法

采用HttpClient3.x上传文件 spring 文件上传

排名第 1 的爬虫框架,到底有多牛逼?

httpclient通过post multipart/form-data 上传文件

HTTPclient使用MultipartEntity怎么上传文件