通过Java代码向指定 URL发送POST方法的请求


/**
 * 向指定 URL 发送POST方法的请求
 *
 * @param url
 *            发送请求的 URL
 * @param param
 *           请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
 * @return 所代表远程资源的响应结果
 */
public static String sendPost(String url, String param) {
   PrintWriter out = null;
   BufferedReader in = null;
   String result = "";
   try {
      URL realUrl = new URL(url);
      // 打开和URL之间的连接
      URLConnection conn = realUrl.openConnection();
      // 设置通用的请求属性
      conn.setRequestProperty("accept", "*/*");
      conn.setRequestProperty("connection", "Keep-Alive");
      conn.setRequestProperty("user-agent",
            "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
      // 发送POST请求必须设置如下两行
      conn.setDoOutput(true);
      conn.setDoInput(true);
      // 获取URLConnection对象对应的输出流
      out = new PrintWriter(conn.getOutputStream());
      // 发送请求参数
      out.print(param);
      // flush输出流的缓冲
      out.flush();
      // 定义BufferedReader输入流来读取URL的响应
      in = new BufferedReader(
            new InputStreamReader(conn.getInputStream()));
      String line;
      while ((line = in.readLine()) != null) {
         result += line;
      }
   } catch (Exception e) {
      System.out.println("发送 POST 请求出现异常!"+e);
      e.printStackTrace();
   }
   //使用finally块来关闭输出流、输入流
   finally{
      try{
         if(out!=null){
            out.close();
         }
         if(in!=null){
            in.close();
         }
      }
      catch(IOException ex){
         ex.printStackTrace();
      }
   }
   return result;
}
你可以使用Java中的HttpURLConnection类来发送HTTP请求。以下是一个示例代码,该代码将文件作为参数发送指定URL: ```java import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class HttpFileUploader { public static void main(String[] args) { String url = "http://example.com/upload"; String filePath = "/path/to/file"; try { File file = new File(filePath); URL urlObj = new URL(url); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); // Set connection parameters conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=boundary"); DataOutputStream outStream = new DataOutputStream(conn.getOutputStream()); // Write file data to the output stream FileInputStream fileInputStream = new FileInputStream(file); byte[] buffer = new byte[1024]; int bytesRead = -1; while ((bytesRead = fileInputStream.read(buffer)) != -1) { outStream.write(buffer, 0, bytesRead); } fileInputStream.close(); // End the multipart/form-data request outStream.writeBytes("--boundary--\r\n"); outStream.flush(); outStream.close(); // Read the server response BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 在这个例子中,我们首先创建一个File对象,然后打开一个HttpURLConnection连接到指定URL。我们设置连接参数,包括将请求方法设置为POST,并且设置Content-Type头为multipart/form-data。 我们创建一个DataOutputStream对象来将文件数据写入输出流中。我们使用一个while循环来读取文件并将其写入输出流。我们在写入文件数据之后写入一个结束边界(--boundary--)来告诉服务器请求已经结束。 最后,我们读取服务器的响应并将其显示在控制台上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值