xiaolihuidao 2015-07-19 13:36 采纳率: 0%
浏览 2362

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 2015-07-20 02: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;
    
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿