鹰翔宇空

学习和生活

BlogJava 首页 新随笔 联系 聚合 管理
  110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
服务器端代码:
在HttpServlet中的doPost(HttpServletRequest request, HttpServletResponse response)方法中:
    ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(request.getInputStream()));(这一步特别容易出错,网上所留言的以及寻求答案的多为这一步,主要是方法位置,如果是doGet方法,我在使用过程中,也一直跑异常,java.io.EOFException,但是换成doPost后就没有了,不知道为什么)。
    ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());

客户端:
     String sMessage = "test";//此处是需要发送的可序列化的对象。
      URL url = newURL("http://localhost:8080/test/servlet");
      URLConnection con = url.openConnection();
      con.setDoInput(true);
      con.setDoOutput(true);
      con.setRequestProperty("Content-type", "application/octest-stream");
      out = con.getOutputStream();
      objStream = new ObjectOutputStream(out);
      objStream.writeObject(sMessage);
      objStream.flush();
      InputStream in = con.getInputStream();
      ObjectInputStream back = new ObjectInputStream(in);
      back.readObject();
      objStream.close();
      back.close();

不知道为什么,必须要有后一部分的,即:必须从连接中获取一个流对象,然后才能触发写入的事件,如果不获取,则没有任何效果,没有研究,下一步再努力研究吧,现在突然对网络编程产生了很大兴趣,可惜啊,出差在外,忙着做项目。
希望有能解释上述原因的朋友不吝赐教。
posted on 2007-09-19 21:11 TrampEagle 阅读(5497) 评论(6)  编辑  收藏 所属分类: 学习体会

Feedback

# re: 如何通过URLConnection向HttpServlet发送信息 2007-09-19 23:15 ky
用commons-httpclient包还是不错的...  回复  更多评论
  

# re: 如何通过URLConnection向HttpServlet发送信息 2007-09-19 23:36 千里冰封
commons-httpclient包是不错,但是一般的应用,JAVA的标准库也可以的  回复  更多评论
  

# re: 如何通过URLConnection向HttpServlet发送信息 2007-09-20 08:30 TrampEagle
@千里冰封
谢谢,我还没有用过commons-httpclient包,抽空我会研究一下的。  回复  更多评论
  

# re: 如何通过URLConnection向HttpServlet发送信息 2007-09-20 14:53 Alexander.Yu
httpclient很好用。  回复  更多评论
  

# re: 如何通过URLConnection向HttpServlet发送信息 2007-09-20 20:48 BeanSoft
建议用 GET/POST 方式或者编码为 XML. 如果两台电脑 JVM 版本不一致的话这种方式有时候会出现问题, 例如某些 JDK 类序列化之后内容不一致, 这个是以前用 JDK 的序列化了参数, 完了后来换用 1.5 的运行, 发现参数反序列化不了了.

GET/POST: http://www.blogjava.net/beansoft/archive/2007/05/23/119444.html
AJAX入门介绍 - (2) GET 和 POST 配合表单

XML 方式参考 /*
* @(#)BeanXML.java 1.00 2005-10-7
*
* Copyright 2005 BeanSoft Studio. All rights reserved.
* PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package beansoft.xml;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.UnsupportedEncodingException;

/**
* BeanXML
*
* Chinese documents:
*
* @author BeanSoft
* @version 1.00 2005-10-7
*/
public class BeanXML {
/**
* 使用 java.beans.XMLEncoder 将 对象编码为 XML.
* @param bean 对象
* @return String - 编码后的 XML
*/
public static String encodeBean(Object bean) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
XMLEncoder encoder = new XMLEncoder(out);
encoder.writeObject(bean);
encoder.close();

return out.toString();
}

/**
* 使用 java.beans.XMLDecoder 将 XML 解码为 对象.
* @param xml - 编码后的 XML
* @return Object 反编码后的对象
*/
public static Object decodeBean(String xml) {
try {
// FIXME 必须使用 GBK 解码才对, 否则出来的文字是乱码?
XMLDecoder decoder = new XMLDecoder(new ByteArrayInputStream(xml.getBytes("GBK")));
return decoder.readObject();
} catch (UnsupportedEncodingException e) {
}

return null;
}
}
  回复  更多评论
  

# re: 如何通过URLConnection向HttpServlet发送信息 2007-09-22 00:50 梧桐
期待  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: