`
gary0416
  • 浏览: 335170 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用httpclient模拟表单提交

阅读更多

文件类型使用FileBody,字符串类型使用StringBody,其它的还有ByteArrayBody,InputStreamBody.

 

 

package com.gary.test.upload;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.DefaultHttpClient;

/**
 * Client
 * @author gary
 *
 */
public class Client {

	public static void main(String[] args) throws Exception {
		String url = "http://localhost:8080/ssh/manage/Disk_add.action";
		String filePath = "test.mp3";
		
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost(url);

		MultipartEntity reqEntity = new MultipartEntity();
		httpPost.setEntity(reqEntity);

		/**	file param name */
		FileBody bin = new FileBody(new File(filePath));
		reqEntity.addPart("Filedata", bin);

		/** String param name */
		StringBody userId = new StringBody("1");
		reqEntity.addPart("userId", userId);
		
		System.out.println("executing: " + httpPost.getRequestLine());
		
		HttpResponse response = httpClient.execute(httpPost);
		HttpEntity responseEntity = response.getEntity();

		System.out.println("----------------------------------------");
		System.out.println(response.getStatusLine());

		if (responseEntity != null){
			System.out.println("Response content: "
					+ inputStream2String(responseEntity.getContent()));
		}

		httpClient.getConnectionManager().shutdown();
	}

	public static String inputStream2String(InputStream is) throws IOException {
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		int i = -1;
		while ((i = is.read()) != -1) {
			baos.write(i);
		}
		return baos.toString();
	}

}

 

Client运行结果

 

executing: POST http://localhost:8080/ssh/manage/Disk_add.action HTTP/1.1

----------------------------------------

HTTP/1.1 200 OK

Response content: 上传成功

 

Server运行结果

 

2011-01-31 21:59:33 DEBUG [ssh.action.DiskAction.add(DiskAction.java:98)] - 成功

上传文件test.mp3到D:\AEclipse2\workspace\myeclipse\ssh\WebRoot\upload\netdisk129

64823729805uYix

 

5
1
分享到:
评论
1 楼 dear_dengzi 2015-01-07  
楼主,用这种方法报java.net.SocketException: sendto failed: ECONNRESET 咋处理

相关推荐

    模拟表单post提交

    在使用HttpClient模拟表单POST提交时,首先需要创建一个HttpClient实例,这通常是通过HttpClientBuilder或者HttpClientFactory来完成的。然后,我们创建一个HttpGet或HttpPost对象,设置其目标URL。对于POST请求,...

    HttpClient模拟登录实例

    这个库广泛用于Web服务交互,特别是当需要模拟浏览器行为,如登录、提交表单或者处理网页上的动态内容时。在本实例中,我们将探讨如何使用HttpClient库来模拟登录网站,获取用户信息,以及处理带有验证码的登录场景...

    httpclient测试登录并提交表单功能

    通过上述分析,我们可以看到Apache HttpClient是一个非常强大的工具,它不仅能够帮助我们模拟登录过程,还可以轻松地处理复杂的表单提交任务。此外,通过对现有类的扩展,还可以实现更多的定制化需求。这对于从事Web...

    httpclient模拟登录实例

    本篇文章将详细讲解如何使用HttpClient进行模拟登录操作,结合源码分析,帮助开发者深入理解其工作原理。 HttpClient库由Apache基金会开发,提供了全面的HTTP协议支持,包括标准与扩展的HTTP方法、连接管理、重试...

    HttpClient 模仿表单上传文件

    在标题"HttpClient模仿表单上传文件"中,我们关注的是如何使用HttpClient来模拟浏览器的表单提交,尤其是涉及到文件上传的场景。在描述中虽然没有具体信息,但通常这种情况会涉及multipart/form-data编码,这是HTML...

    C#.Net模拟表单提交(源码)

    总结来说,C#.Net模拟表单提交涉及的关键技术有HTTP协议、`HttpWebRequest`或`HttpClient`类的使用、数据编码与解码以及错误处理。理解这些概念和实践技巧对于开发Web应用程序至关重要,尤其是在需要自动化测试、...

    HttpClient模拟登陆

    登录通常涉及提交表单数据,这可以通过`NameValuePair`或`BasicNameValuePair`来实现,然后使用`UrlEncodedFormEntity`封装这些参数: ```java List<NameValuePair> formParams = new ArrayList(); formParams.add...

    .NET Core使用HttpClient进行表单提交时遇到的问题

    然而,在使用HttpClient进行表单提交,特别是涉及到文件上传时,可能会遇到一些问题。本文将详细探讨这个问题及其解决方案。 首先,让我们看看问题的背景。在开发微信支付的小微商户进件接口时,我们需要向微信...

    java动态提交网站httpclient

    接下来,我们将讨论如何使用HttpClient库来动态提交网站数据,特别是表单提交。以下是一个基本的POST请求示例,用于提交表单数据: ```java import org.apache.http.HttpEntity; import org.apache....

    Java利用HttpClient模拟POST表单操作应用及注意事项

    在Java中,我们可以通过以下步骤使用HttpClient来模拟POST表单提交: 1. 引入依赖:确保你的项目中已经引入了Apache HttpClient库。通常,这可以通过Maven或Gradle的依赖管理实现。例如,在Maven中,可以在pom.xml...

    C# post方式提交Form表单

    以下是一个简单的C# POST表单提交示例: ```csharp using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var client = new ...

    新浪,腾讯微博HttpClient4模拟登陆

    本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...

    浏览器发送模拟httpclient软件

    GET用于从服务器获取资源,而POST则用于向服务器提交数据,通常用于表单提交或创建新资源。模拟HTTP客户端工具使得开发者能够轻松地测试这些请求,而不必依赖于实际的网页浏览器。 HTTPClient是Java编程语言中的一...

    使用httpclient4登录blog.com

    在登录过程中,通常涉及到HTTP的POST请求,因为登录通常需要提交表单数据。以下是一个简单的使用HttpClient 4登录博客网站的步骤: 1. **创建HttpClient实例**:首先,我们需要创建一个`CloseableHttpClient`对象,...

    用HttpClient来模拟浏览器GET_POST

    使用HttpClient来模拟浏览器GET_POST HttpClient是一个Apache开源组织中的项目,隶属于Jakarta的commons项目,旨在简化HTTP客户端与服务器进行各种通讯编程。通过使用HttpClient,可以轻松地解决以前很头疼的事情,...

    HttpClient模拟登陆方正系统

    2. 构建POST请求:模拟登录通常涉及到POST请求,因为登录通常需要提交表单数据。我们可以使用HttpPost对象来构建请求: ```java HttpPost httpPost = new HttpPost("http://example.com/login"); ``` 3. 设置请求头...

    HttpClient4模拟登录回贴

    这篇博客通过实例展示了如何使用HttpClient4模拟登录并进行回贴操作,这对于理解HttpClient4的使用方法及其在网络编程中的应用非常有帮助。如果想要深入学习,可以参考官方文档和相关教程,以更好地掌握HttpClient4...

    httpclient 模拟登陆代码和jar包

    5. **处理表单数据**:登录通常涉及表单提交,可以使用`UrlEncodedFormEntity`或`MultipartEntityBuilder`来构建表单数据,包含用户名和密码等字段。 6. **执行请求**:通过`HttpClient`的`execute()`方法执行请求...

Global site tag (gtag.js) - Google Analytics