Java请求调用参数格式为form-data类型的接口
短信预约 -IT技能 免费直播动态提醒
接口参数使用postman调用如图所示,只能使用form-data格式调用
使用java代码发送http请求实现此种方式的接口调用
public static String doPostForm(String url, HashMap<String, String> map) throws Exception { String result = ""; CloseableHttpClient client = null; CloseableHttpResponse response = null; RequestConfig defaultRequestConfig = RequestConfig.custom().setSocketTimeout(550000).setConnectTimeout(550000) .setConnectionRequestTimeout(550000).setStaleConnectionCheckEnabled(true).build(); client = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build(); // client = HttpClients.createDefault(); URIBuilder uriBuilder = new URIBuilder(url); HttpPost httpPost = new HttpPost(uriBuilder.build()); httpPost.setHeader("Connection", "Keep-Alive"); httpPost.setHeader("Charset", "UTF-8"); httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded"); Iterator<Map.Entry<String, String>> it = map.entrySet().iterator(); List<NameValuePair> params = new ArrayList<NameValuePair>(); while (it.hasNext()) { Map.Entry<String, String> entry = it.next(); NameValuePair pair = new BasicNameValuePair(entry.getKey(), entry.getValue()); params.add(pair); } httpPost.setEntity(new UrlEncodedFormEntity(params, "UTF-8")); try { response = client.execute(httpPost); if (response != null) { HttpEntity resEntity = response.getEntity(); if (resEntity != null) { result = EntityUtils.toString(resEntity, "UTF-8"); } } } catch (ClientProtocolException e) { throw new RuntimeException("创建连接失败" + e); } catch (IOException e) { throw new RuntimeException("创建连接失败" + e); } return result; }
特别说明:form的Content-Type属性为编码方式
- 常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。
- x-www-form-urlencoded:当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。
- multipart/form-data:当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。
来源地址:https://blog.csdn.net/weixin_44949150/article/details/129408883
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341