问题描述
- 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(); 但是现在我不知道这样处理是否正确,也不明确如何获取对方的返回值? 烦请高手帮忙看看,该如何处理。语句要如何实现?非常感谢!!!
解决方案
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;
时间: 2024-11-01 10:26:46