文件类型使用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
分享到:
相关推荐
在使用HttpClient模拟表单POST提交时,首先需要创建一个HttpClient实例,这通常是通过HttpClientBuilder或者HttpClientFactory来完成的。然后,我们创建一个HttpGet或HttpPost对象,设置其目标URL。对于POST请求,...
这个库广泛用于Web服务交互,特别是当需要模拟浏览器行为,如登录、提交表单或者处理网页上的动态内容时。在本实例中,我们将探讨如何使用HttpClient库来模拟登录网站,获取用户信息,以及处理带有验证码的登录场景...
通过上述分析,我们可以看到Apache HttpClient是一个非常强大的工具,它不仅能够帮助我们模拟登录过程,还可以轻松地处理复杂的表单提交任务。此外,通过对现有类的扩展,还可以实现更多的定制化需求。这对于从事Web...
本篇文章将详细讲解如何使用HttpClient进行模拟登录操作,结合源码分析,帮助开发者深入理解其工作原理。 HttpClient库由Apache基金会开发,提供了全面的HTTP协议支持,包括标准与扩展的HTTP方法、连接管理、重试...
在标题"HttpClient模仿表单上传文件"中,我们关注的是如何使用HttpClient来模拟浏览器的表单提交,尤其是涉及到文件上传的场景。在描述中虽然没有具体信息,但通常这种情况会涉及multipart/form-data编码,这是HTML...
总结来说,C#.Net模拟表单提交涉及的关键技术有HTTP协议、`HttpWebRequest`或`HttpClient`类的使用、数据编码与解码以及错误处理。理解这些概念和实践技巧对于开发Web应用程序至关重要,尤其是在需要自动化测试、...
登录通常涉及提交表单数据,这可以通过`NameValuePair`或`BasicNameValuePair`来实现,然后使用`UrlEncodedFormEntity`封装这些参数: ```java List<NameValuePair> formParams = new ArrayList(); formParams.add...
然而,在使用HttpClient进行表单提交,特别是涉及到文件上传时,可能会遇到一些问题。本文将详细探讨这个问题及其解决方案。 首先,让我们看看问题的背景。在开发微信支付的小微商户进件接口时,我们需要向微信...
接下来,我们将讨论如何使用HttpClient库来动态提交网站数据,特别是表单提交。以下是一个基本的POST请求示例,用于提交表单数据: ```java import org.apache.http.HttpEntity; import org.apache....
在Java中,我们可以通过以下步骤使用HttpClient来模拟POST表单提交: 1. 引入依赖:确保你的项目中已经引入了Apache HttpClient库。通常,这可以通过Maven或Gradle的依赖管理实现。例如,在Maven中,可以在pom.xml...
以下是一个简单的C# POST表单提交示例: ```csharp using System; using System.Net.Http; using System.Threading.Tasks; class Program { static async Task Main(string[] args) { var client = new ...
本文将深入探讨如何使用Java中的HttpClient4库来实现对新浪和腾讯微博的模拟登录。HttpClient4是一个强大的HTTP客户端库,它允许开发者执行HTTP请求并处理响应,非常适合进行网页交互。 首先,我们来看`Sina.java`...
GET用于从服务器获取资源,而POST则用于向服务器提交数据,通常用于表单提交或创建新资源。模拟HTTP客户端工具使得开发者能够轻松地测试这些请求,而不必依赖于实际的网页浏览器。 HTTPClient是Java编程语言中的一...
在登录过程中,通常涉及到HTTP的POST请求,因为登录通常需要提交表单数据。以下是一个简单的使用HttpClient 4登录博客网站的步骤: 1. **创建HttpClient实例**:首先,我们需要创建一个`CloseableHttpClient`对象,...
使用HttpClient来模拟浏览器GET_POST HttpClient是一个Apache开源组织中的项目,隶属于Jakarta的commons项目,旨在简化HTTP客户端与服务器进行各种通讯编程。通过使用HttpClient,可以轻松地解决以前很头疼的事情,...
2. 构建POST请求:模拟登录通常涉及到POST请求,因为登录通常需要提交表单数据。我们可以使用HttpPost对象来构建请求: ```java HttpPost httpPost = new HttpPost("http://example.com/login"); ``` 3. 设置请求头...
这篇博客通过实例展示了如何使用HttpClient4模拟登录并进行回贴操作,这对于理解HttpClient4的使用方法及其在网络编程中的应用非常有帮助。如果想要深入学习,可以参考官方文档和相关教程,以更好地掌握HttpClient4...
5. **处理表单数据**:登录通常涉及表单提交,可以使用`UrlEncodedFormEntity`或`MultipartEntityBuilder`来构建表单数据,包含用户名和密码等字段。 6. **执行请求**:通过`HttpClient`的`execute()`方法执行请求...