weixin_37721334 2021-02-04 10:27 采纳率: 0%
浏览 1760
已结题

HttpsURLConnection如何发送POST请求的body?

java程序,要调用一个https的POST的api,两个参数Referer和stime写的类型是HEAD,两个参数userName和passWord写的类型是BODY。

我用HttpsURLConnection来传参,getResponseCode总是报500,问了系统开发,他觉得是我传参的时候好像不太对,传到url上去了,我在网上查了半天也没看明白body传参到底应该怎么传,求助大佬赐教。

补充:同样的代码,我用百度的地址,就能获得200回复应该是成功了。

    public static void kkk() throws IOException {
        SKIP skip = new SKIP();//尝试避开证书
        try {
            skip.ignoreSsl();
        } catch (Exception e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        String httpsURL = "https://10.19.85.113:8003/v1/login";
        URL myurl = new URL(httpsURL);    
        HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
        con.setRequestMethod("POST");
        long stime1=System.currentTimeMillis();
        String s=stime1+"";
        String r = "https://10.19.85.113/gdas";  
        con.setRequestProperty("Content-Type","application/json; charset=utf-8"); 
        con.setRequestProperty("Referer",r);
        con.setRequestProperty("stime",s);
        con.setDoOutput(true); 
        con.setDoInput(true);
        String query = "{\"userName\":\"system\",\"passWord\":\"EHL_bluray123!@#\"}";
        con.connect();
        OutputStreamWriter writer = new OutputStreamWriter(con.getOutputStream(),"UTF-8");
        writer.write(query);
        System.out.print(query);
        writer.flush();
        //output.writeChars(query);
        //query=test.toString();
        //System.out.print(query+"\n");
        //output.write(query.getBytes());
        //output.close();
        //DataInputStream input = new DataInputStream( con.getInputStream());
        //for( int c = input.read(); c != -1; c = input.read() ) 
        //System.out.print( (char)c ); 
        //input.close();
        System.out.println("Resp Code:"+con.getResponseCode()); 
        System.out.println("Resp Message:"+ con.getResponseMessage());

  • 写回答

2条回答 默认 最新

  • 0X码上链 博客专家认证 2021-02-04 10:48
    关注
    `public class HTTPClassExample{
       public static void main(String[] args) {
            try{
                URL url = new URL("http://localhost:4567/");
                HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
                httpCon.setDoOutput(true);
                httpCon.setRequestMethod("POST");
                httpCon.connect();
                OutputStream os = httpCon.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");    
                osw.write("Just Some Text");
                System.out.println(httpCon.getResponseCode());
                System.out.println(httpCon.getResponseMessage());
                osw.flush();
                osw.close();  
            }catch(Exception ex){
                ex.printStackTrace();
            }
        }
    }
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月6日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度