少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          post提交模擬

          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.OutputStreamWriter;
          import java.net.InetAddress;
          import java.net.Socket;
          import java.net.URLEncoder;

          public class TestSocketPost {

              public static void main(String[] args) {
                  BufferedWriter httpPostWriter = null;
                  BufferedReader httpResponse = null;
                  try {
                      // form域的數據.form域的數據必須以鏈接形式發送
                      StringBuffer formDataItems = new StringBuffer();
                      formDataItems.append(URLEncoder.encode("name", "GBK"));
                      formDataItems.append("=");
                      formDataItems.append(URLEncoder.encode("fruitking", "GBK"));
                      formDataItems.append("&");
                      formDataItems.append(URLEncoder.encode("company", "GBK"));
                      formDataItems.append("=");
                      formDataItems.append(URLEncoder.encode("intohotel", "GBK"));
                      String hostname = "localhost";// 主機,可以是域名,也可以是ip地址
                      int port = 8080;// 端口
                      InetAddress addr = InetAddress.getByName(hostname);
                      // 建立連接
                      Socket socket = new Socket(addr, port);
                      // 創建數據提交數據流
                      httpPostWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "GBK"));
                      // 相對主機的請求地址
                      String httpSubmitPath = "/icbcnet/testpostresult.jsp";
                      // 發送數據頭
                      httpPostWriter.write("POST " + httpSubmitPath + " HTTP/1.0\r\n");
                      httpPostWriter.write("Host: socket方式的post提交測試\r\n");
                      httpPostWriter.write("Content-Length: " + formDataItems.length() + "\r\n");
                      httpPostWriter.write("Content-Type: application/x-www-form-urlencoded\r\n");
                      httpPostWriter.write("\r\n"); // 以空行作為分割
                      // 發送數據
                      httpPostWriter.write(formDataItems.toString());
                      httpPostWriter.flush();
                      // 創建web服務器響應的數據流
                      httpResponse = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK"));
                      String lineStr = "";
                      while ((lineStr = httpResponse.readLine()) != null) {
                          System.out.println(lineStr);
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  } finally {
                      try {
                          if (httpPostWriter != null) {
                              httpPostWriter.close();
                          }
                          if (httpResponse != null) {
                              httpResponse.close();
                          }
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
          }

          get模擬

          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.OutputStreamWriter;
          import java.net.InetAddress;
          import java.net.Socket;
          import java.net.URLEncoder;

          public class TestSocketGet {

              public static void main(String[] args) {
                  BufferedWriter httpGetWriter = null;
                  BufferedReader httpResponse = null;
                  try {
                      String hostname = "localhost";// 主機,可以是域名,也可以是ip地址
                      int port = 8080;// 端口
                      InetAddress addr = InetAddress.getByName(hostname);
                      // 建立連接
                      Socket socket = new Socket(addr, port);
                      // 創建數據提交數據流
                      httpGetWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "GBK"));
                      // 相對主機的請求地址
                      StringBuffer httpSubmitPath = new StringBuffer("/icbcnet/testpostresult.jsp?");
                      httpSubmitPath.append(URLEncoder.encode("name", "GBK"));
                      httpSubmitPath.append("=");
                      httpSubmitPath.append(URLEncoder.encode("fruitking", "GBK"));
                      httpSubmitPath.append("&");
                      httpSubmitPath.append(URLEncoder.encode("company", "GBK"));
                      httpSubmitPath.append("=");
                      httpSubmitPath.append(URLEncoder.encode("pubone", "GBK"));
                      httpGetWriter.write("GET " + httpSubmitPath.toString() + " HTTP/1.1\r\n");
                      httpGetWriter.write("Host: socket方式的get提交測試\r\n");
                      httpGetWriter.write("\r\n");
                      httpGetWriter.flush();
                      // 創建web服務器響應的數據流
                      httpResponse = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK"));
                      // 讀取每一行的數據.注意大部分端口操作都需要交互數據。
                      String lineStr = "";
                      while ((lineStr = httpResponse.readLine()) != null) {
                          System.out.println(lineStr);
                      }
                  } catch (Exception e) {
                      e.printStackTrace();
                  } finally {
                      try {
                          if (httpGetWriter != null) {
                              httpGetWriter.close();
                          }
                          if (httpResponse != null) {
                              httpResponse.close();
                          }
                      } catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
          }
          posted on 2012-12-31 12:35 abin 閱讀(2359) 評論(0)  編輯  收藏 所屬分類: Socket

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 中方县| 炉霍县| 洪洞县| 琼中| 花垣县| 措勤县| 青岛市| 班玛县| 城步| 黄陵县| 枣阳市| 漳平市| 通山县| 额尔古纳市| 开原市| 饶阳县| 尖扎县| 鄢陵县| 博野县| 临朐县| 昂仁县| 洛阳市| 昌平区| 阜南县| 赫章县| 阳泉市| 三门县| 揭东县| 柞水县| 宁城县| 濉溪县| 内黄县| 崇左市| 双流县| 府谷县| 盐亭县| 武穴市| 哈尔滨市| 南靖县| 山阴县| 新龙县|