代码之家  ›  专栏  ›  技术社区  ›  user3668129

使用HttpURLConnection发送post

  •  1
  • user3668129  · 技术社区  · 6 年前

    我有一个node.js,它用两个参数(name和pass)等待post:

    app.post('/login.html', function (req, res) {
    
        log.info(req.body);
        userName = req.body.name;
        pass = req.body.pass;
        ...
    }
    

    我试图通过简单的java应用程序发送带有2个参数的post,但我看不到它是否到达node.js。

    我错过了什么?

    public static void main(String[] args) {
        URL url;
        HttpURLConnection urlConnection = null;
        try {
            url = new URL("http://83.63.118.111:31011/login.html");
    
            urlConnection = (HttpURLConnection) url.openConnection();               
            urlConnection.setReadTimeout(10000);
            urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
    
            urlConnection.setConnectTimeout(10000);
            urlConnection.setRequestMethod("POST");
            urlConnection.setDoInput(true);
            urlConnection.setDoOutput(true);
    
            OutputStream os = urlConnection.getOutputStream();
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));          
            String str = "name='root'&pass='123456'";
            //System.out.print(str);
            writer.write(str);
            writer.flush();
            Thread.sleep(100);
            writer.close();
            os.close();       
    }           
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   hong4rc 6ark    6 年前

    你应该等它完成。

    在后面添加代码 writer.flush();

    示例get response :

    BufferedReader in = new BufferedReader(
            new InputStreamReader(urlConnection.getInputStream()));
    String inputLine;
    StringBuilder response = new StringBuilder();
    
    while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
    }
    in.close();
    

    或者就这样 responseCode :

    int responseCode = urlConnection.getResponseCode();
    

    您的程序等待发送请求成功或失败。

    我想你用 Thread.sleep(100); 等待发送请求,但它会停止线程(不向服务器发送数据)

    你的代码 req.body ,Express.js没有,需要使用中间件 body-parser .