技术分享
使用HttpGet发送formdata格式数据 - 可打印的版本

+- 技术分享 (https://www.1dream.fun)
+-- 版块: 代码天地 (https://www.1dream.fun/forumdisplay.php?fid=1)
+--- 版块: java模块 (https://www.1dream.fun/forumdisplay.php?fid=3)
+---- 版块: 其他java (https://www.1dream.fun/forumdisplay.php?fid=15)
+---- 主题: 使用HttpGet发送formdata格式数据 (/showthread.php?tid=1)

页: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24


使用HttpGet发送formdata格式数据 - wangxg - 10-18-2024

今天对接第三方接口,遇到个奇怪的方式,要求使用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格式数据的解决办法


我的想法是狂野的,它Ê - AmandaClorolog1 - 12-29-2024

让我们看看我们今晚能走多远 - https://rb.gy/es66fc?PerAride


Test, just a test - Michaelkew - 01-19-2025

Hello. And Bye.


Сколько стоит зуб металлокерамика - Skolko_evma - 01-24-2025

Что стоит зуб металлокерамика?.
Протезирование зубов металлокерамика http://www.belfamilydent.ru/services/metallokeramicheskie-koronki .


Циркониевые коронки для зубов в Минске - Cirkonievy_jqOl - 01-27-2025

Лучшие специалисты в Минске установят циркониевые коронки, обеспечат безупречный результат.
Стоимость циркониевой коронки на зуб belfamilydent.ru/services/koronki-iz-cirkoniya .


BdMjcc4b6jjujkpMoSoU - GreggMum - 01-29-2025

BdMjcc4b6jjujkpMoSoU

BdMjcc4b6jjujkpMoSoU


Стоматология Минск - Stomatolog_pami - 01-30-2025

Стоматологические услуги в Минске: выбор лучшего для себя, для вашего комфорта и уверенности.
Услуги стоматолога в Минске цены http://www.belamed.ru .


zDTvHFu2zgx34ZNBn6H1tema - StevenNeest - 01-31-2025

zDTvHFu2zgx34ZNBn6H1zmist
http://37623464.com/


BwSMk00UoUk4kWoqQpUA - FrankEvisa - 02-05-2025

BwSMk00UoUk4kWoqQpUAzmist


BwSMk00UoUk4kWoqQpUA - Robertdog - 02-06-2025

BwSMk00UoUk4kWoqQpUAzmist

BwSMk00UoUk4kWoqQpUAzmist