主题评价:
  • 0 次(票) - 平均星级: 0
  • 1
  • 2
  • 3
  • 4
  • 5
使用HttpGet发送formdata格式数据
#1
今天对接第三方接口,遇到个奇怪的方式,要求使用HttpGet发送FormData,但是吧使用HttpGet发送FormData格式的数据不是标准做法,因为HttpGet通常用于获取资源,它的设计不包括请求体(request body)。当然人家既然弄出这样的接口,就表示一般是可以实现的,
以下是实现源码
  • HttpGetWithBody继承HttpEntityEnclosingRequestBase ,而HttpEntityEnclosingRequestBase支持携带body
代码:
import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;

import java.net.URI;

/**
* httpget带body
*
* @author 1dream.fun
* @since 2024/10/15 14:54
*/
public class HttpGetWithBody extends HttpEntityEnclosingRequestBase {
    public static final String METHOD_NAME = "GET";
    HttpGetWithBody(final String uri) {
        super();
        setURI(URI.create(uri));
    }

    @Override
    public String getMethod() {
        return METHOD_NAME;
    }
}
  • 接口实现,具体以实际需求进行改动
代码:
import org.apache.http.client.entity.EntityBuilder;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
    /**
     * 获取form请求结果
     * @param url 地址
     * @param headers 请求头
     * @param body 请求form参数
     * @date 2024/10/18 11:08
     * @return java.lang.String
     */
    private static String getWithForm(String url, Map<String,String> headers,Map<String,Object> body) throws IOException {
        HttpGetWithBody httpGet = new HttpGetWithBody(url);
        headers.forEach(httpGet::setHeader);
        final MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
        body.forEach((k,v)-> multipartEntityBuilder.addTextBody(k, Optional.ofNullable(v).map(Object::toString).orElse("")));
        httpGet.setEntity(multipartEntityBuilder.build());
        return EntityUtils.toString(HttpClients.createDefault().execute(httpGet).getEntity());
    }
以上就是本次实现 使用HttpGet发送formdata格式数据的解决办法
Cool他什么都没有说,却好像什么都说了
回复


这个主题的帖子
使用HttpGet发送formdata格式数据 - by wangxg - 10-18-2024, 12:22
Test, just a test - by Michaelkew - 01-19-2025, 00:48
Tulip. Soil. Vilnius. - by atollxeyExcuri - 02-10-2025, 13:39
ygvlqhnx rdusm - by usonlinepbj - 02-19-2025, 09:13
Лечение акне - by Lechenie_yhoi - 03-22-2025, 09:16
zDTvHFu2zgx34ZNBn6H1tema - by StevenNeest - 01-31-2025, 20:07
Dw. Mike shanahan. Cum. - by atollxeyExcuri - 02-09-2025, 23:24
Ботокс фулфейс - by Botoks_glei - 03-05-2025, 04:17
botox - by botox_aksr - 03-06-2025, 06:08
Лечение акне - by Lechenie_egoi - 04-16-2025, 19:47
Curated Film Selections - by AlfredGaile - 04-25-2025, 06:01
4543sert435545kjhkhj44 - by Harrywib - 04-29-2025, 15:17
BdMjcc4b6jjujkpMoSoU - by GreggMum - 01-29-2025, 17:14
4543sert435545kjhkhj44 - by AnthonyMat - 04-29-2025, 18:21
BwSMk00UoUk4kWoqQpUA - by FrankEvisa - 02-05-2025, 17:57
BwSMk00UoUk4kWoqQpUA - by Robertdog - 02-06-2025, 22:32
Discover 10-Film Lists - by AlfredGaile - 04-28-2025, 16:03
Ботокс фулфейс - by Botoks_fzei - 02-25-2025, 06:58
Monica - by Monica keype - 04-26-2025, 08:14
RE: ??HttpGet??formdata???? - by Masterpkx - 02-22-2025, 09:09
Лечение акне - by Lechenie_jgoi - 02-24-2025, 09:28
RE: ??HttpGet??formdata???? - by Ninjabis - 03-06-2025, 13:45
RE: ??HttpGet??formdata???? - by Samvdl - 03-26-2025, 05:00
RE: ??HttpGet??formdata???? - by Wifeane - 03-26-2025, 07:18
Ботокс - by Botoks_coPt - 04-07-2025, 23:22
RE: ??HttpGet??formdata???? - by Cativp - 03-26-2025, 09:46
RE: ??HttpGet??formdata???? - by Wolfuaq - 03-26-2025, 11:47
RE: ??HttpGet??formdata???? - by Goodvck - 03-26-2025, 17:20
RE: ??HttpGet??formdata???? - by Cyberyly - 03-26-2025, 19:50
RE: ??HttpGet??formdata???? - by Ironmzx - 03-31-2025, 06:17
RE: ??HttpGet??formdata???? - by Masterxui - 03-31-2025, 11:43
RE: ??HttpGet??formdata???? - by Iceclm - 04-09-2025, 07:54
RE: ??HttpGet??formdata???? - by Peopledvq - 04-09-2025, 09:45
4543sert435545kjhkhj44 - by Harrywib - 04-29-2025, 16:30

论坛跳转:


正在浏览该主题的用户: 1 个游客