各位,大家好,有个问题想请教一下,目前一套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;