因为你使用了httpURLConnection,那么你肯定要和一个web应用进行交互,所以最直接的办法就是使用servlet,在servlet中处理完数据后,如果返回的只是简单的字符串,那么可以在servlet中使用response.getWriter().println("this is test");在你的客户端可直接使用 BufferedReader in = new BufferedReader(new InputStreamReader(conn. getInputStream())); // print first ten lines of contents String line; while ( (line = in.readLine()) != null ) { System.out.println(line); } 得到servlet的输出,不过你得客户端的程序中要添加上 conn.setRequestMethod("POST"); conn.setDoOutput(true); conn.setDoInput(true);//这是添加的,表明要接受服务器的输入 如果需要接受的是一个对象,那就需要传递对象了
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
或者
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
其中的request应该就是HttpServletRequest
void jButton2_actionPerformed(ActionEvent e) {
try {
URL url = new URL("http://localhost:16800");
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
//conn.connect();
conn.setRequestMethod("POST");
conn.setDoOutput(true); XmlDocument doc=new XmlDocument();
String para="";
para=doc.createXmlDocument("query.xml").toString();
System.out.println("haha"); //向服务器发送请求数据,数据就是一个xml文件
BufferedWriter bWriter = new java.io.BufferedWriter(new java.io.OutputStreamWriter(conn.
getOutputStream()));
bWriter.write(para);
//关闭连接
bWriter.flush();
bWriter.close();
conn.disconnect(); java.io.BufferedReader bReader = null;
// int c= conn.getResponseCode();
// String str= conn.getResponseMessage();
………………………………………………………………………………………………
到这里该怎么做啊,服务器要把处理的结果传回客户端,代码该怎么写啊 ………………………………………………………………………………………………
htmlArea.removeAll();
//把结果显示在文本框中
htmlArea.setText(sb.toString()); } catch(Exception ex) {
ex.printStackTrace();
}
}
快啊,时间不多了,大家帮帮忙。要多少分给多少,只要能解决问题。
2.把………………………………………………………………………………………………
到这里该怎么做啊,服务器要把处理的结果传回客户端,代码该怎么写啊 ……………………………………………………………………………………………… 替换成 bReader = new BufferedReader(urlcon.getInputStream());
然后分析结果
3.把conn.disconnect();移动到bReader = new BufferedReader(urlcon.getInputStream());
之后!
因为他正好有这个方法getReader
javax.servlet.http.HttpServletRequestjsp中的request也可以
XmlDocument doc=new XmlDocument();
String para="";
para=doc.createXmlDocument("query.xml").toString();
因为我输出para时,并不是xml文件的内容,而是org.apache.crimson.tree.XmlDocument@56f631
大家帮我分析一下。
看来今天要加班了。
BufferedReader in = new BufferedReader(new
InputStreamReader(conn.
getInputStream())); // print first ten lines of contents String line; while ( (line = in.readLine()) != null ) {
System.out.println(line); }
得到servlet的输出,不过你得客户端的程序中要添加上
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);//这是添加的,表明要接受服务器的输入
如果需要接受的是一个对象,那就需要传递对象了
URL url = new URL("http://localhost:16800");
HttpURLConnection conn =(HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestProperty("Content-type","application/x-www-form-urlencoded");
conn.setRequestProperty("rBeacon-Service","1001");
//获得读入服务器的数据
String para="";
LineNumberReader reader = new LineNumberReader(new FileReader("query.txt"));
String line;
//分别读入数据表文件中的每一行
while ( (line = reader.readLine()) != null)
para+=line+"\n";
para=para.substring(0,para.length()-1);
//测试输出
System.out.print(para);
//向服务器发送请求数据
BufferedWriter bWriter = new java.io.BufferedWriter(new java.io.OutputStreamWriter(conn.
getOutputStream()));
bWriter.write(para);
//关闭连接
bWriter.flush();
bWriter.close(); //从服务器读取数据
if( conn.getResponseCode()==HttpURLConnection.HTTP_OK) {
StringBuffer sb = new StringBuffer();
String line2 = null;
BufferedReader in = new BufferedReader(new java.io.InputStreamReader(
conn.getInputStream()));
while ( (line2 = in.readLine()) != null) {
sb.append(line);
System.out.println("\n程序可以执行到这里!");
}
in.close();
System.out.print("输出为:" + sb); jTextArea1.removeAll(); jTextArea1.setText(sb.toString());
输出为:
<rBeacon version='5.0'>
<directaccess pool='ACCESS' interrupt='1'>
<statement maxrow='100' columntype='0' format='1' resultset='0' gotorow='0'>select * from source</statement>
</directaccess>
</rBeacon>
程序可以执行到这里!
输出为:null。
请问这是怎么回事?服务器上可以显示其收到客户的请求,但就是不能把响应结果显示出来,大家帮忙看一下啊,谢谢了。
while ( (line2 = in.readLine()) != null) {
sb.append(line);
System.out.println("\n程序可以执行到这里!");
}
其中 sb.append(line);
应该为 sb.append(line2);,line的初始化为null,所以结果就输出为空。呵呵,都是我太粗心了,给大家添麻烦了,对不起大家,呵呵。同时也忠心感谢大家的热情帮忙。