`
sw1982
  • 浏览: 511215 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HttpClient4 POST数据及问题

 
阅读更多

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();
			}
	  }
}

 

 

分享到:
评论
4 楼 chjy1983 2014-09-25  
请教下,我这样:
JSONObject jsonObject = new JSONObject();//入参
jsonObject.put("acc_nbr", "13335659988");
jsonObject.put("latn_id", "551");
jsonObject.put("month_id", "201408");
StringEntity se = new StringEntity(jsonObject.toString(), "utf-8");
httpPost.setEntity(se);
HttpResponse response = httpclient.execute(httpPost);//发出请求

struts2 action中怎么获取post jsonObject的参数??
3 楼 tmq3244286 2013-06-26  
请问demo()中构造简单的字符串参数时怎样才可以不设置参数名直接传值
类似StringEntity reqEntity = new StringEntity("strValue");这样
2 楼 zhangxiaoboaq 2012-07-07  
服务端获取不到post参数
1 楼 zhangxiaoboaq 2012-07-07  
我这怎么运行不成功呢,给我解释一下

相关推荐

    httpclient post json 数据

    "httpclient post json数据"这个主题就是关于如何使用C#的HttpClient类来向Web API发送POST请求,并且以JSON格式传输数据。下面将详细解释这一过程。 首先,理解JSON(JavaScript Object Notation)是一种轻量级的...

    HttpClient发送post请求传输json数据

    在这个场景中,我们关注的是如何使用HttpClient来发送POST请求并传输JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于API接口的数据传递。 首先,我们需要引入Apache HttpClient...

    httpclient发送post请求

    本篇文章将深入探讨如何使用HTTPClient发送POST请求,以及相关的项目结构和实现细节。 首先,"post-demo"项目定义了我们需要调用的接口。通常,这会是一个Web服务,可能是一个RESTful API,提供特定的功能或数据。...

    httpclient.post例子

    首先,我们需要理解POST请求的基本概念,它通常用于向服务器发送数据,比如提交表单或者上传文件。 在`httpclient.jar`包中,主要涉及`org.apache.http.client`和`org.apache.http.entity`这两个关键包,它们提供了...

    HttpClient实现POST GET和文件下载

    3. **设置请求体**:如果POST请求有数据需要提交,可以使用`HttpEntityEnclosingRequestBase.setEntity()`方法设置请求实体,例如,使用`StringEntity`或`UrlEncodedFormEntity`来封装数据。 4. **执行请求**:通过...

    httpclient post方式发送请求

    本篇文章将详细讲解如何使用HTTPClient库以POST方式发送JSON格式的数据,并介绍相关依赖包。 首先,为了使用HTTPClient库,我们需要导入Apache HttpClient相关的JAR包。在提供的文件列表中,"HttpClientJar"很可能...

    httpclient使用post方法上传多个图片个其他参数的demo源码

    在本示例中,我们将关注“httpclient使用post方法上传多个图片和其他参数的demo源码”,这是一个涉及到文件上传和参数传递的重要场景。 在Web开发中,POST方法常用于向服务器提交数据,比如表单数据或文件。...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在使用HttpClient发送POST请求时,我们需要关心两个方面的问题:一是如何忽略证书验证过程,二是如何发送POST请求。对于前者,我们可以使用X509TrustManager来忽略证书验证过程。对于后者,我们可以使用HttpPost对象...

    使用HttpClient异步请求数据

    在这个场景下,`ConnectionServlet`可能负责接收`HttpClient`发送的GET或POST请求,处理后返回数据。 文件`4.8通过HttpClient异步请求数据`可能是一个示例代码或教程,讲述了如何在Android应用的4.8版本中使用`...

    httpclient模拟post请求json封装表单数据的实现方法

    在这个场景中,我们关注的是如何使用 HTTPClient 发送一个 JSON 格式的 POST 请求并封装表单数据。下面将详细介绍这个过程。 首先,我们需要创建一个 `HttpPost` 对象,并指定目标 URL。在给出的代码中,`url` 参数...

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    c#实现HttpClient拼接multipart/form-data形式参数post提交数据

    使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,

    使用HttpClient发送POST请求,并获取响应内容(附详细步骤).txt

    ### 使用HttpClient发送POST请求,并获取响应内容 #### 一、简介 在现代软件开发中,尤其是在Web应用领域,客户端与服务器之间的通信是非常重要的环节。Java作为一种广泛应用的编程语言,提供了多种方式来实现这一...

    httpClient post 上传 下载 图片

    在本场景中,我们关注的是"httpClient post 上传图片"以及"下载图片"的操作。下面将详细介绍如何使用HttpClient进行图片的上传和下载,并探讨如何修改上传和下载的URI。 1. **HttpClient上传图片**: - 首先,我们...

    HttpClient 4文件上传

    ### HttpClient 4 文件上传知识点详解 #### 一、概述 在Java开发中,经常会遇到需要通过HTTP协议上传文件的需求。Apache HttpClient是一个强大的客户端HTTP组件,它不仅支持HTTP协议,还能处理HTTPS请求,并提供了...

    HttpClient发送http请求(post和get)需要的jar包+内符java代码案例+注解详解

    然而,如果你在使用日志框架(如Log4j),可能需要在项目中添加相应的日志配置,如`@Log4j`,以便在代码中记录HttpClient的活动。 5. **实战应用**: HttpClient常用于爬虫、API调用、自动化测试等场景。例如,你...

    HttpClient 4 - 文件上传

    总结起来,HttpClient 4通过`MultipartEntity`和`HttpPost`提供了强大的文件上传功能,结合`HttpAsyncClient`还能实现高效的异步传输。这些组件和类库是理解和实现HTTP文件上传的关键,对于任何需要与Web服务器交互...

Global site tag (gtag.js) - Google Analytics