post 方式挂参数的三种格式, mark一下。
其中尤其需要注意的是下面这个error()的调用方法,使用到MultipartEntity 带3个参数的完整 , 会导致请求参数在服务器端无法获取到post参数!
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.STRICT, null, charsetObj);
but上面这个new MultipartEntity,如果使用无参的构造函数则一切ok, public MultipartEntity()
--------------
具体细节待深究
import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.ParseException; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.StringBody; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; public class Test { final static String URL = "http://localhost/"; final static Charset charsetObj = Charset.forName("utf-8"); public static void main(String[] args) throws Exception { error(); // demo() ; // method3(); } public static void demo() throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); // 目标地址 HttpPost httppost = new HttpPost(URL); // 构造最简单的字符串数据 StringEntity reqEntity = new StringEntity("firstname=abcde&lastname=fghi"); // 设置类型 reqEntity.setContentType("application/x-www-form-urlencoded"); // 设置请求的数据 httppost.setEntity(reqEntity); // 执行 HttpResponse httpresponse = httpclient.execute(httppost); HttpEntity entity = httpresponse.getEntity(); String body = EntityUtils.toString(entity); System.out.println(body); } public static void error() { int tryTimes = 3; MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.STRICT, null, charsetObj); try { HttpClient client = new DefaultHttpClient(); // client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 3000); HttpPost httppost = new HttpPost(URL); multipartEntity.addPart("firstname", new StringBody("xxxxxxxxxxxxxxxxxxxxxxx",charsetObj)); multipartEntity.addPart("lastname", new StringBody("yyyyyyyyyyyyyyyyyyyyyyy",charsetObj)); //设置连接超时时间 //设置读取response超时时间 httppost.setEntity(multipartEntity); HttpResponse httpresponse = client.execute(httppost); HttpEntity entity = httpresponse.getEntity(); String body = EntityUtils.toString(entity); System.out.println(body); }catch (Exception e) { System.out.println(e); } } public static void method3() { HttpClient client = new DefaultHttpClient(); HttpPost httppost = new HttpPost(URL); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("email", "xxx@gmail.com")); params.add(new BasicNameValuePair("pwd", "xxx")); params.add(new BasicNameValuePair("save_login", "1")); try { // Post请求 // 设置参数 httppost.setEntity(new UrlEncodedFormEntity(params,"UTF-8")); // 发送请求 HttpResponse httpresponse = client.execute(httppost); HttpEntity entity = httpresponse.getEntity(); String body = EntityUtils.toString(entity); System.out.println(body); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关推荐
"httpclient post json数据"这个主题就是关于如何使用C#的HttpClient类来向Web API发送POST请求,并且以JSON格式传输数据。下面将详细解释这一过程。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的...
在这个场景中,我们关注的是如何使用HttpClient来发送POST请求并传输JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于API接口的数据传递。 首先,我们需要引入Apache HttpClient...
本篇文章将深入探讨如何使用HTTPClient发送POST请求,以及相关的项目结构和实现细节。 首先,"post-demo"项目定义了我们需要调用的接口。通常,这会是一个Web服务,可能是一个RESTful API,提供特定的功能或数据。...
首先,我们需要理解POST请求的基本概念,它通常用于向服务器发送数据,比如提交表单或者上传文件。 在`httpclient.jar`包中,主要涉及`org.apache.http.client`和`org.apache.http.entity`这两个关键包,它们提供了...
3. **设置请求体**:如果POST请求有数据需要提交,可以使用`HttpEntityEnclosingRequestBase.setEntity()`方法设置请求实体,例如,使用`StringEntity`或`UrlEncodedFormEntity`来封装数据。 4. **执行请求**:通过...
本篇文章将详细讲解如何使用HTTPClient库以POST方式发送JSON格式的数据,并介绍相关依赖包。 首先,为了使用HTTPClient库,我们需要导入Apache HttpClient相关的JAR包。在提供的文件列表中,"HttpClientJar"很可能...
在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...
在使用HttpClient发送POST请求时,我们需要关心两个方面的问题:一是如何忽略证书验证过程,二是如何发送POST请求。对于前者,我们可以使用X509TrustManager来忽略证书验证过程。对于后者,我们可以使用HttpPost对象...
在这个场景下,`ConnectionServlet`可能负责接收`HttpClient`发送的GET或POST请求,处理后返回数据。 文件`4.8通过HttpClient异步请求数据`可能是一个示例代码或教程,讲述了如何在Android应用的4.8版本中使用`...
在这个场景中,我们关注的是如何使用 HTTPClient 发送一个 JSON 格式的 POST 请求并封装表单数据。下面将详细介绍这个过程。 首先,我们需要创建一个 `HttpPost` 对象,并指定目标 URL。在给出的代码中,`url` 参数...
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
### 使用HttpClient发送POST请求,并获取响应内容 #### 一、简介 在现代软件开发中,尤其是在Web应用领域,客户端与服务器之间的通信是非常重要的环节。Java作为一种广泛应用的编程语言,提供了多种方式来实现这一...
在本场景中,我们关注的是"httpClient post 上传图片"以及"下载图片"的操作。下面将详细介绍如何使用HttpClient进行图片的上传和下载,并探讨如何修改上传和下载的URI。 1. **HttpClient上传图片**: - 首先,我们...
### HttpClient 4 文件上传知识点详解 #### 一、概述 在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了...
然而,如果你在使用日志框架(如Log4j),可能需要在项目中添加相应的日志配置,如`@Log4j`,以便在代码中记录HttpClient的活动。 5. **实战应用**: HttpClient常用于爬虫、API调用、自动化测试等场景。例如,你...
总结起来,HttpClient 4通过`MultipartEntity`和`HttpPost`提供了强大的文件上传功能,结合`HttpAsyncClient`还能实现高效的异步传输。这些组件和类库是理解和实现HTTP文件上传的关键,对于任何需要与Web服务器交互...