HttpClient POST传参, SpringMVC接受
来源:互联网 发布:linux创建文件的api 编辑:程序博客网 时间:2024/05/20 17:25
我们在做Http请求的时候,客户端会从服务端传一个复杂的参数,但是,大家知道,用GET请求会出现转义字符报错等问题,请求会失败,这时候我们用POST请求传参数,注意此方支持时候HTTP和HTTPS两种协议,在URL上面要标注,我这里是HTTP协议.
客户端代码一:
import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.apache.http.conn.ClientConnectionManager;import org.apache.http.conn.scheme.Scheme;import org.apache.http.conn.scheme.SchemeRegistry;import org.apache.http.conn.ssl.SSLSocketFactory;import org.apache.http.impl.client.DefaultHttpClient;//用于进行Https请求的HttpClientpublic class SSLClient extends DefaultHttpClient{public SSLClient() throws Exception{ super(); SSLContext ctx = SSLContext.getInstance("TLS"); X509TrustManager tm = new X509TrustManager() { @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } @Override public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[]{tm}, null); SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ClientConnectionManager ccm = this.getConnectionManager(); SchemeRegistry sr = ccm.getSchemeRegistry(); sr.register(new Scheme("https", 443, ssf)); }}客户端代码二
import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;/* * 利用HttpClient进行post请求的工具类 */public class HttpClientUtil {public String doPost(String url,Map<String,String> map,String charset){HttpClient httpClient = null;HttpPost httpPost = null;String result = null;try{httpClient = new SSLClient();httpPost = new HttpPost(url);//设置参数List<NameValuePair> list = new ArrayList<NameValuePair>();Iterator iterator = map.entrySet().iterator();while(iterator.hasNext()){Entry<String,String> elem = (Entry<String, String>) iterator.next();list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));}if(list.size() > 0){UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);httpPost.setEntity(entity);}HttpResponse response = httpClient.execute(httpPost);if(response != null){HttpEntity resEntity = response.getEntity();if(resEntity != null){result = EntityUtils.toString(resEntity,charset);}}}catch(Exception ex){ex.printStackTrace();}return result;} /**测试代码,此处注意请求地址必须要有权限,我这里用的shiro拦截,因为要登录,为了避免登录,此处要把url 放开,如果你的服务端框架没有任何拦截器(不用登陆),则不需要做放开权限的操作,关于shiro使用,可以咨询我的QQ:243517277***/public static void main(String[] args){
String url = "http://127.0.0.1:8080/dlcgsdzda_web/";
String charset = "utf-8";
HttpClientUtil httpClientUtil = new HttpClientUtil();
String httpOrgCreateTest = url + "redict/test.do";
Map<String,String> createMap = new HashMap<String,String>();
createMap.put("name","左国斌");
createMap.put("pass","admin");
createMap.put("key","@#!`\\\\\\\\");
createMap.put("value","<>#$@#%^");
createMap.put("url",httpOrgCreateTest);
String httpOrgCreateTestRtn = httpClientUtil.doPost(httpOrgCreateTest,createMap,charset);
System.out.println("result:"+httpOrgCreateTestRtn);
}
}服务端代码,我这里用到的是springMVC,注意可以用@ModelAttribute接受POST请求的参数package org.aisino.dlcgsController;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;@Controller@RequestMapping(value = "/redict")public class T {@RequestMapping(value = "/test", method = RequestMethod.POST)@ResponseBodypublic Map<String,Object> test(HttpServletRequest request,@ModelAttribute("url")String url,@ModelAttribute("name")String name,@ModelAttribute("pass")String pass,@ModelAttribute("key")String key,@ModelAttribute("value")String value) { Map<String, Object> map=new HashMap<String, Object>(); map.put("url", url); map.put("name", name); map.put("pass", pass); map.put("key", key); map.put("value", value); return map; }}注意,httpcilent要依赖httpclient-4.4.jar,我这里上传了,这里还包含了其他用途的jar,例如模仿客户端文件上传的jar,都在其中,大家按选择挑选.
阅读全文
0 0
- HttpClient POST传参, SpringMVC接受
- springmvc GET POST 接受参数方式
- httpclient发送post/get请求,Java后台怎么接受
- SpringMVC template和HttpClient post提交
- SpringMVC如何接受POST请求中的json参数
- SpringMVC如何接受POST请求中的json参数
- axios 以POST方式提交数据springMVC @RequestParam无法接受
- httpClient post步骤 解析json数据(向服务器传递,接受服务器传递))
- httpclient post
- httpclient post
- httpclient post
- HTTPCLIENT.POST
- springMVC用@RequestBody接受post json对象 (415 Unsupported media type)
- 解决springMVC中restful的POST请求时接受json对象转换pojo对象失败问题
- SpringMVC @RequestBody接受post json对象 (415 Unsupported media type)
- 解决 AngularJs $http 发送post,get请求,SpringMvc无法接受参数的问题。
- 使用Httpclient向百度翻译提交POST请求 接受返回的JSON字符串 实现翻译功能(2)----Httpclient使用详解
- SpringMVC接受请求参数
- leetcode 31. Next Permutation
- android popupwindow在屏幕内水平居中
- 7000个传感器遍布街道 控江路街道完成社区物联网工程第一期建设
- iOS 11开发教程(七)编写第一个iOS11代码Hello,World
- Java堆内存和栈内存分析
- HttpClient POST传参, SpringMVC接受
- 安装docker私有镜像库及简易管理工具
- CentOS 配置MySQL允许远程登录
- eclipse Ctrl +左键查看源代码提示找不到源source not found
- (Android四大组件)---Activity
- 前端开发小Bug小方案整理
- JavaScript进阶必看!!!!!!
- git问题整理
- angular2 cli 命令使用