在Java中,如何编写HTTP请求消息并将其发送到HTTP Web服务器?

推荐答案

你可以用java.net.HttpUrlConnection美元.

示例(from here),并进行了改进.包括在链路损坏的情况下:

public static String executePost(String targetURL, String urlParameters) {
  HttpURLConnection connection = null;

  try {
    //Create connection
    URL url = new URL(targetURL);
    connection = (HttpURLConnection) url.openConnection();
    connection.setRequestMethod("POST");
    connection.setRequestProperty("Content-Type", 
        "application/x-www-form-urlencoded");

    connection.setRequestProperty("Content-Length", 
        Integer.toString(urlParameters.getBytes().length));
    connection.setRequestProperty("Content-Language", "en-US");  

    connection.setUseCaches(false);
    connection.setDoOutput(true);

    //Send request
    DataOutputStream wr = new DataOutputStream (
        connection.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.close();

    //Get Response  
    InputStream is = connection.getInputStream();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
    StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+
    String line;
    while ((line = rd.readLine()) != null) {
      response.append(line);
      response.append('\r');
    }
    rd.close();
    return response.toString();
  } catch (Exception e) {
    e.printStackTrace();
    return null;
  } finally {
    if (connection != null) {
      connection.disconnect();
    }
  }
}

Java相关问答推荐

内容处置 destruct 了PSP请求

Java 21虚拟线程会解决转向react 式单线程框架的主要原因吗?

从技术上讲,OPC UA客户端是否可以通过转发代理将请求通过 tunel 发送到OPC UA服务器?

JUnit—如何模拟局部变量对象方法调用

有没有一种方法使保持活动设置专用于java.net.http.HttpClient的一个实例

为什么一个Test的instance?& gt;在构造函数中接受非空对象?

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

Jakarta CDI强制bean构造/注册遗留事件侦听器

Jenv-相同的Java版本,但带有前缀

使SLF4J在Android中登录到Logcat,在测试中登录到控制台(Gradle依赖问题)

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

在Frege中,我如何将一个字符串安全地转换为一个可能的Int?

Java中不兼容的泛型类型

EXCEL中的公式单元格显示#NAME?

如何使用Criteria Builder处理一对多关系中的空值?

从映射列表中检索所有键

try 在两个不同数组的数字之间求平均值

我无法在我的Spring Boot应用程序中导入CSV依赖项

Java中的一个错误';s stdlib SocksSocketImpl?

原始和参数化之间的差异调用orElseGet时可选(供应商)