如何发送这样一个http请求?

问题如题:
如何发送这样一个http请求?

尝试:
1.我使用hutool工具的form方法时并没有找到设置content-type的参数。
2.查看请求报文

3.发现表单中的部分其实是请求体body,按照格式构造一个相似的字符串作为body调用接口,但是不行,可以看出字符串的高亮和表单时并不一样,而且content-type也不一样。

4.后端接口,主要是需要提供一个上传文件,并且可以携带复制参数(参数中有map)的接口


5.目前调用方也是使用Java发送这样的http请求,不过目前确实才疏学浅,真的不会,最差就只能换种方式了。

阅读 1.3k
avatarAI BotBETA

发送这样一个http请求的方法可以使用Java中的HttpURLConnection类或者HttpClient类来实现。以下是一个基本的示例代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpRequestExample {
    public static void main(String[] args) throws Exception {
        URL url = new URL("http://example.com/api");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        
        // 设置请求方法为POST
        connection.setRequestMethod("POST");
        
        // 设置请求头参数
        connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
        
        // 向请求体写入数据
        String requestBody = "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n" +
                "Content-Disposition: form-data; name=\"key1\"\r\n\r\n" +
                "value1\r\n" +
                "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\n" +
                "Content-Disposition: form-data; name=\"key2\"\r\n\r\n" +
                "value2\r\n" +
                "------WebKitFormBoundary7MA4YWxkTrZu0gW--\r\n";
        connection.setDoOutput(true);
        connection.getOutputStream().write(requestBody.getBytes());
        
        // 发送请求并获取响应
        int responseCode = connection.getResponseCode();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        StringBuilder response = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();
        
        // 输出响应结果
        System.out.println("Response Code: " + responseCode);
        System.out.println("Response Data: " + response.toString());
        
        // 关闭连接
        connection.disconnect();
    }
}

这个示例代码使用POST方法发送请求,并设置了请求头的Content-Type参数为"multipart/form-data",并且按照请求体的格式构造了一个字符串,并写入到请求体中。

1 个回答

hutool 的 HttpRequest 确实不能为 MultipartFormData 的每一项单独再设置 Content-Type 或者其他额外的属性标头了。

但为啥非得用 hutool 呢?HttpClient 不就好了?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题