HttpUtil发送 x-www-form-urencode表单请求

/**
     * x-www-form-urlencoded方式的post请求
     *  x-www-form-urlencoded请求方式的请求报文格式为  ?key=value&key=value
     * @param url
     * @param heapMap 头信息
     * @param bodyMap 请求体
     */
import org.apache.http.NameValuePair;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import java.io.IOException;

	
	
    private String formTranspond(String url, Map<String,String> headMap,Map<String,String> bodyMap) {
   		String result = "";
        CloseableHttpClient httpClient = null;
        HttpPost httpPost = null;
        List<org.apache.http.NameValuePair> nvps = new ArrayList<>(); //用于存放请求体内容
        //请求体封装
        if(null != bodyMap && bodyMap.size() != 0){
        	for(String paramKey : bodyMap.keySet()){
        		//new BasicNameValuePair(key值,键值)
        		nvps.add(new BasicNameValuePair(paramKey,paramMap.get(paramKey)));
        	}
        }
        try {
            // 1 创建HttpClinet,相当于打开浏览器
            httpClient = HttpClients.createDefault();
            // 2 创建HttpPost请求方式
            httpPost = new HttpPost(url);
            //请求头信息封装
            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            if(null != headMap && headMap.size() != 0){
            	for(String headKey : headMap.keySet()){
        			//new BasicNameValuePair(key值,键值)
        			httpPost.setHeader(headKey,paramMap.get(headKey)));
        		}
            }
            httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
            // 3 设置post请求的参数
            httpPost.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8"));
            // 4 发送HttpPost请求,获取返回值
            result = httpClient.execute(httpPost);//调接口获取返回值时,必须用此方法
        } catch (IOException e) {
            e.printStackTrace();
        }
        return result;
    }

亲测可用 纯手工敲码有问题联系 谢谢!

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Go中的`httputil`发送`form-data`请求,可以按照以下步骤进行操作: 1. 创建一个`url.Values`类型的Map,将表单字段和值添加到其中。 2. 使用`bytes.Buffer`和`mime/multipart`包构建一个`multipart/form-data`请求体,将表单数据添加到其中。 3. 使用`http.NewRequest`创建一个新的POST请求,将请求体添加到其中。 4. 添加必要的请求头,例如`Content-Type`和`Content-Length`。 5. 使用`http.DefaultClient`执行请求,并处理响应。 以下是一个示例代码: ```go import ( "bytes" "mime/multipart" "net/http" "net/http/httputil" "net/url" ) func sendFormData(url string, formData url.Values) (*http.Response, error) { // 创建 multipart 请求体 var body bytes.Buffer writer := multipart.NewWriter(&body) for key, values := range formData { for _, value := range values { _ = writer.WriteField(key, value) } } err := writer.Close() if err != nil { return nil, err } // 创建 POST 请求 req, err := http.NewRequest("POST", url, &body) if err != nil { return nil, err } req.Header.Set("Content-Type", writer.FormDataContentType()) // 发送请求 resp, err := http.DefaultClient.Do(req) if err != nil { return nil, err } defer resp.Body.Close() // 处理响应 dump, err := httputil.DumpResponse(resp, true) if err != nil { return nil, err } fmt.Printf("%q", dump) return resp, nil } ``` 在调用此函数时,您需要提供目标URL和表单数据。例如: ```go formData := url.Values{ "name": {"Alice"}, "age": {"30"}, } resp, err := sendFormData("http://example.com/upload", formData) if err != nil { log.Fatal(err) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值