鷹翔宇空

          學習和生活

          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 閱讀(5519) 評論(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.aygfsteel.com/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 梧桐
          期待  回復  更多評論
            

          主站蜘蛛池模板: 庆安县| 广丰县| 蓝山县| 疏附县| 瑞丽市| 宜君县| 开原市| 咸阳市| 乌苏市| 东宁县| 溧水县| 藁城市| 定州市| 兰州市| 昌平区| 潍坊市| 政和县| 淮北市| 庆城县| 绩溪县| 安达市| 陵川县| 九龙城区| 阿巴嘎旗| 静宁县| 宣汉县| 常熟市| 广河县| 平江县| 南京市| 澎湖县| 衢州市| 察哈| 天镇县| 永靖县| 河间市| 正阳县| 白河县| 青浦区| 锡林郭勒盟| 孟村|