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(); } } }
相关推荐
利用c# httpclient ,post json数据到web api
httpclient post方式发送json格式数据,需要的相关包。
NULL 博文链接:https://cxl2012.iteye.com/blog/2210521
httpclient模拟post请求json封装表单数据的实现方法 httpclient模拟post请求json封装表单数据的实现方法
HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。
使用c#实现的HttpClient拼接multipart/form-data形式参数post提交数据,包含图片内容,有需要的可以下载,希望能帮到有需要的人,
HttpClient get、post 请求,抓取网络数据,jar包以及源码
本方法以HttpClient发送请求,并且接收返回数据 举例说明 public static String doGet(String url, Map, String> params, String charset) public static void downLoadImage(String url, String path) public ...
HttpClient post请求(用于key-value格式的参数), post请求(用于请求json格式的参数),加入了请求头以及token认证,成功之后读取服务器返回过来的json字符串数据
以httpclient方式提交数据(POST和GET),实现返回服务器数据。
一个简单的易学的 基于HttpClient 4.3发送psot及get请求,返回数据,适合初学者,适合初学者
采用 HttpClient GET、POST 方式 提交数据到服务器
小小测试项目包含了4个知识点,其中包含了http协议向服务器传输数据的post和get方法,包含了httpclient传输方法,httpclient上传文件到服务器的方法,
POST提交数据加密使用HttpWatch获取的数据是加密后的 用户名user1 密码:123456
HttpClient使用简介,关于HttpClient访问Web的GET和POST两种访问方式的介绍
采用httpclient发送xml报文,httpServer接收报文。两个程序一看就明白可以直接调用执行不在多说。
这个代码的作用是使用HttpClient发送POST请求,...通过学习这个示例,你可以了解到如何使用HttpClient发送不同类型的HTTP请求(如GET、POST、PUT、DELETE等),以及如何处理响应结果(如读取响应体、解析JSON数据等)。
// 发生致命的异常,可能是协议不对或者返回的内容有问题 System.out.println("请检查输入的URL!"); e.printStackTrace(); } catch (IOException e) { // 发生网络异常 System.out.println("发生网络异常!"); ...
NULL 博文链接:https://javasam.iteye.com/blog/2117845