鷹翔宇空

          學(xué)習(xí)和生活

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
          服務(wù)器端代碼:
          在HttpServlet中的doPost(HttpServletRequest request, HttpServletResponse response)方法中:
              ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(request.getInputStream()));(這一步特別容易出錯(cuò),網(wǎng)上所留言的以及尋求答案的多為這一步,主要是方法位置,如果是doGet方法,我在使用過(guò)程中,也一直跑異常,java.io.EOFException,但是換成doPost后就沒(méi)有了,不知道為什么)。
              ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());

          客戶端:
               String sMessage = "test";//此處是需要發(fā)送的可序列化的對(duì)象。
                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();

          不知道為什么,必須要有后一部分的,即:必須從連接中獲取一個(gè)流對(duì)象,然后才能觸發(fā)寫(xiě)入的事件,如果不獲取,則沒(méi)有任何效果,沒(méi)有研究,下一步再努力研究吧,現(xiàn)在突然對(duì)網(wǎng)絡(luò)編程產(chǎn)生了很大興趣,可惜啊,出差在外,忙著做項(xiàng)目。
          希望有能解釋上述原因的朋友不吝賜教。
          posted on 2007-09-19 21:11 TrampEagle 閱讀(5525) 評(píng)論(6)  編輯  收藏 所屬分類(lèi): 學(xué)習(xí)體會(huì)

          Feedback

          # re: 如何通過(guò)URLConnection向HttpServlet發(fā)送信息 2007-09-19 23:15 ky
          用commons-httpclient包還是不錯(cuò)的...  回復(fù)  更多評(píng)論
            

          # re: 如何通過(guò)URLConnection向HttpServlet發(fā)送信息 2007-09-19 23:36 千里冰封
          commons-httpclient包是不錯(cuò),但是一般的應(yīng)用,JAVA的標(biāo)準(zhǔn)庫(kù)也可以的  回復(fù)  更多評(píng)論
            

          # re: 如何通過(guò)URLConnection向HttpServlet發(fā)送信息 2007-09-20 08:30 TrampEagle
          @千里冰封
          謝謝,我還沒(méi)有用過(guò)commons-httpclient包,抽空我會(huì)研究一下的。  回復(fù)  更多評(píng)論
            

          # re: 如何通過(guò)URLConnection向HttpServlet發(fā)送信息 2007-09-20 14:53 Alexander.Yu
          httpclient很好用。  回復(fù)  更多評(píng)論
            

          # re: 如何通過(guò)URLConnection向HttpServlet發(fā)送信息 2007-09-20 20:48 BeanSoft
          建議用 GET/POST 方式或者編碼為 XML. 如果兩臺(tái)電腦 JVM 版本不一致的話這種方式有時(shí)候會(huì)出現(xiàn)問(wèn)題, 例如某些 JDK 類(lèi)序列化之后內(nèi)容不一致, 這個(gè)是以前用 JDK 的序列化了參數(shù), 完了后來(lái)?yè)Q用 1.5 的運(yùn)行, 發(fā)現(xiàn)參數(shù)反序列化不了了.

          GET/POST: http://www.aygfsteel.com/beansoft/archive/2007/05/23/119444.html
          AJAX入門(mén)介紹 - (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 將 對(duì)象編碼為 XML.
          * @param bean 對(duì)象
          * @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 解碼為 對(duì)象.
          * @param xml - 編碼后的 XML
          * @return Object 反編碼后的對(duì)象
          */
          public static Object decodeBean(String xml) {
          try {
          // FIXME 必須使用 GBK 解碼才對(duì), 否則出來(lái)的文字是亂碼?
          XMLDecoder decoder = new XMLDecoder(new ByteArrayInputStream(xml.getBytes("GBK")));
          return decoder.readObject();
          } catch (UnsupportedEncodingException e) {
          }

          return null;
          }
          }
            回復(fù)  更多評(píng)論
            

          # re: 如何通過(guò)URLConnection向HttpServlet發(fā)送信息 2007-09-22 00:50 梧桐
          期待  回復(fù)  更多評(píng)論
            

          主站蜘蛛池模板: 名山县| 文山县| 蓬安县| 岚皋县| 中西区| 合水县| 佳木斯市| 巴中市| 连山| 长泰县| 洪江市| 呼伦贝尔市| 彝良县| 金塔县| 敖汉旗| 高淳县| 兰坪| 罗定市| 荣成市| 即墨市| 内江市| 青神县| 峨眉山市| 鹰潭市| 温州市| 乐安县| 玉树县| 汉中市| 铜陵市| 石嘴山市| 浦北县| 页游| 平武县| 河东区| 沭阳县| 丹巴县| 仁寿县| 皮山县| 玛纳斯县| 苏州市| 嫩江县|