2 xiaolihuidao xiaolihuidao 于 2015.07.19 21:36 提问

Java web 调用cgi发送form表达数据,如何获取返回值?

各位,大家好,有个问题想请教一下,目前一套java web开发的网站,需要调用外公司
提供的一个cgi接口,用于实现发送一个字符串(包含了几个字段的数据)给他们的cgi
脚本,我们发送不论成功或者失败,他们都会返回一个具体的int值给我们,我该如何发
送并获取返回值?网上看到的资料不是特别多,自己大概的思路如下:

//jsp要调用的程序为AgentRetMaintainerAct.cgi
URL u = new URL("http://www.****.com.cn/***/cgi-bin/AgentRetMaintainerAct.cgi");

//urlc表示 URL 的连接对象
URLConnection urlc = u.openConnection();

//指示应用程序要从 URL 连接读取数据
        urlc.setDoOutput(true);
        urlc.setDoInput(true);

//允许用户交互。
        urlc.setAllowUserInteraction(true);

//输出流getoutputstream,用于向socket端发送数据,就是发送消息用的                      
        DataOutputStream server = new DataOutputStream(urlc.getOutputStream());     

        //调用cgi通过http的post方式发送字符串到cgi
        server.writeBytes(totol);
        server.close();

        但是现在我不知道这样处理是否正确,也不明确如何获取对方的返回值?

        烦请高手帮忙看看,该如何处理。语句要如何实现?非常感谢!!!

1个回答

yuke198907
yuke198907   2015.07.20 10:04
 String rec_string = "";//返回值
 String address ="";//URL地址
 String commString = "";//参数字符串
        URL url = null;
        HttpURLConnection urlConn = null;
        try {
            /* 得到url地址的URL类 */
            url = new URL(address);
            /* 获得打开需要发送的url连接 */
            urlConn = (HttpURLConnection) url.openConnection();
            /* 设置连接超时时间 */
            urlConn.setConnectTimeout(30000);
            /* 设置读取响应超时时间 */
            urlConn.setReadTimeout(30000);
            /* 设置post发送方式 */
            urlConn.setRequestMethod("POST");
            /* 发送commString */
            urlConn.setDoOutput(true);
            urlConn.setDoInput(true);
            OutputStream out = urlConn.getOutputStream();
            out.write(commString.getBytes());
            out.flush();
            out.close();
            /* 发送完毕 获取返回流,解析流数据 */
            BufferedReader rd = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8"));
            StringBuffer sb = new StringBuffer();
            int ch;
            while ((ch = rd.read()) > -1) {
                sb.append((char) ch);
            }
            rec_string = sb.toString().trim();
            /* 解析完毕关闭输入流 */
            rd.close();
        } catch (Exception e) {
            /* 异常处理 */
            rec_string = "-107";
            System.out.println(e);
        } finally {
            if (urlConn != null) {
                /* 关闭URL连接 */
                urlConn.disconnect();
            }
        }
        /* 返回响应内容 */
        return rec_string;
Csdn user default icon
上传中...
上传图片
插入图片