Java中使用HttpURLConnection发起POST 请求

来源:互联网 发布:超级搜索软件 编辑:程序博客网 时间:2024/06/05 21:15

1.需求是调用远程的服务器来返回数据,开始想用前端来发送请求采用 jsonp或者cors,发现这两种都需要远程服务器代码有所改变,无奈用后台了。

代码:

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

//postData参数,//postUrl 远程链接地址

public static String JsonSMS(String postData, String postUrl) {
        try {
            // 发送POST请求  建立连接  
            URL url = new URL(postUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
             //设置连接属性   
            conn.setRequestMethod("POST");// 设置URL请求方法
            conn.setRequestProperty("Content-Type", "application/json");//发送请求参数类型
            conn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
            conn.setUseCaches(false);// 忽略缓存
            conn.setDoOutput(true);//使用 URL 连接进行输出
            conn.setRequestProperty("Content-Length", "" + postData.length());
            OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
            out.write(postData);
            out.flush();
            out.close();
            // 获取响应状态
            if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
                System.out.println("connect failed!");
                return "";
            }
            // 获取响应内容体
            String line, result = "";
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));
            while ((line = in.readLine()) != null) {
                result += line + "\n";
            }
            in.close();
            return result;
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
        return "";
    }

原创粉丝点击