首页 > Java教程 > 正文

在实际的开发中,经常会使用的使用Java发送http请求访问远程服务器的URL接口,前段时间正好项目中出现了短信接口的调用就是这么一个需要Java访问远端URL,而且必须是post方法提交的请求,现在整理了一下,把代码分享并且备忘,在下面的代码中,把链接地址和相关的参数都定义成了class的private属性了,实际使用中,完全可以作为方法的参数传入,这个就要看具体的需求了。

package com.csyor.test;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 * 
 * java模拟表单提交请求远端URL
 * 
 * @author Csyor
 * 
 */
public class HttpRequest {

    private String requestURL = "url";// 请求的URL
    private String param1 = "param1";// 参数1
    private String param2 = "param2";// 参数2
    private String param3 = "param3";// 参数3

    // 更多参数...

    public String request() throws UnsupportedEncodingException {
        String result = null;// 返回结果

        InputStream inStream = null;
        ByteArrayOutputStream outStream = null;
        byte[] data = null;

        try {
            URL url = new URL(requestURL);// 请求的URL
            // 打开连接
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");// 提交模式为post
            conn.setDoOutput(true);// 是否输入参数
            // 下面进行拼接参数
            StringBuffer params = new StringBuffer();
            // 表单参数与get形式一样
            params.append("param1").append("=").append(param1.trim()).append("&").
                   append("param2").append("=").append(param2.trim()).append("&").
                   append("param3").append("=").append(param3.trim());
            // 可以添加更的参数,每个参数之间使用“&”分开

            byte[] bypes = params.toString().getBytes();// 把参数转换成二进制

            conn.getOutputStream().write(bypes);// 输入参数

            inStream = conn.getInputStream();
            outStream = new ByteArrayOutputStream();

            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = inStream.read(buffer)) != -1) {
                outStream.write(buffer, 0, len);
            }
            data = outStream.toByteArray();// 网页的二进制数据

            result = new String(data, "utf-8");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                outStream.close();
                inStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return result;
    }

}

以上内容来自于网络,如有侵权联系即删除。

猜你喜欢
发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论信息