一言不合就写socket的post和get请求。写个桌面程序,利用java写get和post请求。测试成功;

SocketReq.java

  1. package com.test.CipherIndex;
  2. import java.io.BufferedInputStream;
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.ByteArrayOutputStream;
  6. import java.io.DataOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.InputStreamReader;
  10. import java.io.OutputStreamWriter;
  11. import java.net.InetSocketAddress;
  12. import java.net.Socket;
  13. import java.net.SocketAddress;
  14. import java.net.URL;
  15. import java.net.URLEncoder;
  16. import java.net.UnknownHostException;
  17. import java.security.KeyManagementException;
  18. import java.security.NoSuchAlgorithmException;
  19. import java.security.Security;
  20. import java.security.cert.CertificateException;
  21. import java.security.cert.X509Certificate;
  22. import javax.net.ssl.*;
  23. import com.sun.net.ssl.internal.www.protocol.https.*;
  24. public class SocketReq {
  25. private int port;
  26. private String host;
  27. private Socket socket;
  28. private BufferedReader bufferedReader;
  29. private BufferedWriter bufferedWriter;
  30. public SocketReq() {
  31. }
  32. public SocketReq(String host, int port) {
  33. this.host = host;
  34. this.port = port;
  35. try {
  36. socket = (SSLSocket) ((SSLSocketFactory) SSLSocketFactory
  37. .getDefault()).createSocket(this.host, this.port);
  38. } catch (UnknownHostException e1) {
  39. // TODO Auto-generated catch block
  40. e1.printStackTrace();
  41. } catch (IOException e1) {
  42. // TODO Auto-generated catch block
  43. e1.printStackTrace();
  44. }
  45. // SSLSocket
  46. // try {
  47. // socket = (SSLSocket) factory.createSocket("https://192.168.111.30",
  48. // 443);
  49. // } catch (UnknownHostException e) {
  50. // // TODO Auto-generated catch block
  51. // e.printStackTrace();
  52. // } catch (IOException e) {
  53. // // TODO Auto-generated catch block
  54. // e.printStackTrace();
  55. // }
  56. // socket = new Socket();
  57. }
  58. public void sendGet(String path) throws IOException {
  59. // 自定义的管理器
  60. X509TrustManager xtm = new TrustAnyTrustManager();
  61. TrustManager mytm[] = { xtm };
  62. // 得到上下文
  63. SSLContext ctx;
  64. try {
  65. ctx = SSLContext.getInstance("SSL");
  66. // 初始化
  67. ctx.init(null, mytm, null);
  68. // 获得工厂
  69. SSLSocketFactory factory = ctx.getSocketFactory();
  70. // 从工厂获得Socket连接
  71. Socket socket = factory.createSocket(this.host, 443);
  72. // 剩下的就和普通的Socket操作一样了
  73. BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
  74. socket.getOutputStream()));
  75. BufferedReader in = new BufferedReader(new InputStreamReader(
  76. socket.getInputStream()));
  77. out.write("GET " + path + " HTTP/1.0\n\n");
  78. out.flush();
  79. System.out.println("start   work!");
  80. String line;
  81. StringBuffer sb = new StringBuffer();
  82. while ((line = in.readLine()) != null) {
  83. sb.append(line + "\n");
  84. }
  85. out.close();
  86. in.close();
  87. String outcome = sb.toString();
  88. System.out.println(outcome);
  89. } catch (NoSuchAlgorithmException e) {
  90. // TODO Auto-generated catch block
  91. e.printStackTrace();
  92. } catch (KeyManagementException e) {
  93. // TODO Auto-generated catch block
  94. e.printStackTrace();
  95. }
  96. }
  97. public void sendPost(String path) throws IOException {
  98. // String path = "/zhigang/postDemo.php";
  99. String data = URLEncoder.encode("name", "utf-8") + "="
  100. + URLEncoder.encode("gloomyfish", "utf-8") + "&"
  101. + URLEncoder.encode("age", "utf-8") + "="
  102. + URLEncoder.encode("32", "utf-8");
  103. // String data = "name=zhigang_jia";
  104. SocketAddress dest = new InetSocketAddress(this.host, this.port);
  105. socket.connect(dest);
  106. OutputStreamWriter streamWriter = new OutputStreamWriter(
  107. socket.getOutputStream(), "utf-8");
  108. bufferedWriter = new BufferedWriter(streamWriter);
  109. bufferedWriter.write("POST " + path + " HTTP/1.1\r\n");
  110. bufferedWriter.write("Host: " + this.host + "\r\n");
  111. bufferedWriter.write("Content-Length: " + data.length() + "\r\n");
  112. bufferedWriter
  113. .write("Content-Type: application/x-www-form-urlencoded\r\n");
  114. bufferedWriter.write("\r\n");
  115. bufferedWriter.write(data);
  116. bufferedWriter.flush();
  117. bufferedWriter.write("\r\n");
  118. bufferedWriter.flush();
  119. BufferedInputStream streamReader = new BufferedInputStream(
  120. socket.getInputStream());
  121. bufferedReader = new BufferedReader(new InputStreamReader(streamReader,
  122. "utf-8"));
  123. String line = null;
  124. while ((line = bufferedReader.readLine()) != null) {
  125. System.out.println(line.getBytes("utf-8"));
  126. }
  127. bufferedReader.close();
  128. bufferedWriter.close();
  129. socket.close();
  130. }
  131. public static byte[] post(String url, String content, String charset)
  132. throws NoSuchAlgorithmException, KeyManagementException,
  133. IOException {
  134. byte[] ret = null;
  135. try {
  136. SSLContext sc = SSLContext.getInstance("SSL");
  137. sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
  138. new java.security.SecureRandom());
  139. URL console = new URL(url);
  140. HttpsURLConnection conn = (HttpsURLConnection) console
  141. .openConnection();
  142. conn.setRequestMethod("POST");
  143. conn.setRequestProperty("Connection", "Keep-Alive");
  144. conn.setRequestProperty("Charset", "UTF-8");
  145. conn.setRequestProperty("Content-type",
  146. "multipart/form-data;boundary=*****");
  147. // 在与服务器连接之前,设置一些网络参数
  148. conn.setConnectTimeout(10000);
  149. conn.setDoOutput(true);
  150. conn.setSSLSocketFactory(sc.getSocketFactory());
  151. conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
  152. conn.connect();
  153. DataOutputStream out = new DataOutputStream(conn.getOutputStream());
  154. out.write(content.getBytes(charset));
  155. // 刷新、关闭
  156. out.flush();
  157. out.close();
  158. InputStream is = conn.getInputStream();
  159. try {
  160. if (is != null) {
  161. ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  162. byte[] buffer = new byte[1024];
  163. int len = 0;
  164. while ((len = is.read(buffer)) != -1) {
  165. outStream.write(buffer, 0, len);
  166. }
  167. // is.close();
  168. ret = outStream.toByteArray();
  169. }
  170. } catch (Exception e) {
  171. e.printStackTrace();
  172. } finally {
  173. if (null != is) {
  174. is.close();
  175. }
  176. }
  177. } catch (Exception e) {
  178. e.printStackTrace();
  179. }
  180. return ret;
  181. }
  182. public static byte[] get(String url, String content, String charset)
  183. throws NoSuchAlgorithmException, KeyManagementException,
  184. IOException {
  185. byte[] ret = null;
  186. try {
  187. SSLContext sc = SSLContext.getInstance("SSL");
  188. sc.init(null, new TrustManager[] { new TrustAnyTrustManager() },
  189. new java.security.SecureRandom());
  190. URL console = new URL(url);
  191. HttpsURLConnection conn = (HttpsURLConnection) console
  192. .openConnection();
  193. conn.setRequestMethod("GET");
  194. // conn.setRequestProperty("Content-type",
  195. // "multipart/form-data;boundary=*****");
  196. // 在与服务器连接之前,设置一些网络参数
  197. conn.setConnectTimeout(10000);
  198. conn.setReadTimeout(10000);
  199. // conn.setDoOutput(true);
  200. conn.setSSLSocketFactory(sc.getSocketFactory());
  201. conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
  202. conn.setRequestProperty("Connection", "Keep-Alive");
  203. conn.setRequestProperty("Charset", "UTF-8");
  204. conn.setRequestProperty("Content-Type",
  205. "application/x-www-form-urlencoded");
  206. conn.connect();
  207. InputStream is = conn.getInputStream();
  208. try {
  209. if (is != null) {
  210. ByteArrayOutputStream outStream = new ByteArrayOutputStream();
  211. byte[] buffer = new byte[1024];
  212. int len = 0;
  213. while ((len = is.read(buffer)) != -1) {
  214. outStream.write(buffer, 0, len);
  215. }
  216. ret = outStream.toByteArray();
  217. }
  218. } catch (Exception e) {
  219. e.printStackTrace();
  220. } finally {
  221. if (null != is) {
  222. is.close();
  223. }
  224. }
  225. } catch (Exception e) {
  226. e.printStackTrace();
  227. }
  228. // 关闭输入流
  229. return ret;
  230. }
  231. private static class TrustAnyTrustManager implements X509TrustManager {
  232. TrustAnyTrustManager() {
  233. // 这里可以进行证书的初始化操作
  234. }
  235. public void checkClientTrusted(X509Certificate[] chain, String authType)
  236. throws CertificateException {
  237. // System.out.println("检查客户端的可信任状态...");
  238. }
  239. public void checkServerTrusted(X509Certificate[] chain, String authType)
  240. throws CertificateException {
  241. // System.out.println("检查服务器的可信任状态");
  242. }
  243. public X509Certificate[] getAcceptedIssuers() {
  244. // System.out.println("获取接受的发行商数组...");
  245. return new X509Certificate[] {};
  246. }
  247. }
  248. private static class TrustAnyHostnameVerifier implements HostnameVerifier {
  249. public boolean verify(String hostname, SSLSession session) {
  250. return true;
  251. }
  252. }
  253. }

CipherMain.java

    1. package com.test.CipherIndex;
    2. import java.io.IOException;
    3. import java.io.UnsupportedEncodingException;
    4. import java.security.KeyManagementException;
    5. import java.security.NoSuchAlgorithmException;
    6. import com.test.MainTest;
    7. public class CipherMain {
    8. public static void main(String[] args) {
    9. CipherMain cm = new CipherMain();
    10. //      cm.test_post();
    11. cm.test_get();
    12. }
    13. void test_post() {
    14. SocketReq socketreq = new SocketReq();
    15. try {
    16. byte[] getret = socketreq.get(
    17. "https://192.168.111.30/Mycloud/index.html", "1", "utf-8");
    18. String getstrRead = new String(getret, "utf-8");
    19. System.out.println(getstrRead);
    20. } catch (KeyManagementException e) {
    21. // TODO Auto-generated catch block
    22. e.printStackTrace();
    23. } catch (NoSuchAlgorithmException e) {
    24. // TODO Auto-generated catch block
    25. e.printStackTrace();
    26. }
    27. catch (UnsupportedEncodingException e) {
    28. // TODO Auto-generated catch block
    29. e.printStackTrace();
    30. } catch (IOException e) {
    31. // TODO Auto-generated catch block
    32. e.printStackTrace();
    33. }
    34. }
    35. void test_get() {
    36. SocketReq socketreq = new SocketReq();
    37. try {
    38. byte[] ret = socketreq.post(
    39. "https://192.168.111.30/Mycloud/index.html", "1", "utf-8");
    40. String strRead = new String(ret, "utf-8");
    41. System.out.println(strRead);
    42. } catch (KeyManagementException e) {
    43. // TODO Auto-generated catch block
    44. e.printStackTrace();
    45. } catch (NoSuchAlgorithmException e) {
    46. // TODO Auto-generated catch block
    47. e.printStackTrace();
    48. }
    49. catch (UnsupportedEncodingException e) {
    50. // TODO Auto-generated catch block
    51. e.printStackTrace();
    52. } catch (IOException e) {
    53. // TODO Auto-generated catch block
    54. e.printStackTrace();
    55. }
    56. }
    57. }

http://blog.csdn.net/bupt073114/article/details/52092489

一言不合就写socket的post和get请求(拼内容,然后发出去即可)的更多相关文章

  1. 一言不合就动手系列篇一-仿电商平台前端搜索插件(filterMore)

    话说某年某月某日,后台系统需要重构,当时公司还没有专业前端,由我负责前台页面框架搭建,做过后台系统的都知道,传统的管理系统大部分都是列表界面和编辑界面.列表界面又由表格和搜索框组成, 对于全部都是输入 ...

  2. 在windows下用C语言写socket通讯实例

    原文:在windows下用C语言写socket通讯实例 From:Microsoft Dev Center #undef UNICODE #define WIN32_LEAN_AND_MEAN #in ...

  3. C++写Socket——TCP篇(0)建立连接及双方传输数据

    满山的红叶--飘落之时-- 最近接触了点关于用C++写socket的东西,这里总结下. 这里主要是关于TCP的,TCP的特点什么的相关介绍在我另一篇博文里,所以这里直接动手吧. 我们先在windows ...

  4. php 利用socket发送GET,POST请求

    作为php程序员一定会接触http协议,也只有深入了解http协议,编程水平才会更进一步.最近我一直在学习php的关于http的编程,许多东西恍然大悟,受益匪浅.希望分享给大家.本文需要有一定http ...

  5. HTTP 笔记与总结(3 )socket 编程:发送 GET 请求

    使用 PHP + socket 模拟发送 HTTP GET 请求,过程是: ① 打开连接 ② 构造 GET 请求的数据:写入请求行.请求头信息.请求主体信息(GET 请求没有主体信息) ③ 发送 GE ...

  6. 『言善信』Fiddler工具 — 2、HTTP请求内容详解

    目录 1.HTTP协议介绍 2.使用Fiddler抓取一个请求 3.НТТP请求报文 (1)НТТP请求报文说明 (2)请求行 (3)请求头(Request Header) (4)请求体 4.НТТР ...

  7. 用PYTHON硬写SOCKET

    这个文章的系列很有意思,练练~~: http://python.jobbole.com/82763/ :) 第一步,最简单的SERVER和CLIENT.感觉和写JAVA,C的最简单的一样一样的,,看来 ...

  8. [Golang] 从零开始写Socket Server(1): Socket-Client框架

    版权声明:本文为博主原创文章,未经博主允许不得转载. 第一次跑到互联网公司实习 ..感觉自己进步飞快啊~第一周刚写了个HTTP服务器用于微信公共号的点餐系统~ 第二周就直接开始一边自学Go语言一边写用 ...

  9. Python3.6写socket程序

    Python进行Socket程序编写使用的主要模块就是 socket 模块,在这个模块中可以找到 socket()函数,该函数用于创建套接字对象.套接字也有自己的方法集,这些方法可以实现基于套接字的网 ...

随机推荐

  1. [NodeJS] Use Now alias for custom sub-domains

    Now is a great way to deploy your node application, but the generated URLs aren't memorable or easil ...

  2. HDU 3974 Assign the task 并查集

    http://acm.hdu.edu.cn/showproblem.php?pid=3974 题目大意: 一个公司有N个员工,对于每个员工,如果他们有下属,那么他们下属的下属也是他的下属. 公司会给员 ...

  3. ORACEL上传BLOB,深度遍历文件夹

    // uploadingDlg.cpp : 实现文件// #include "stdafx.h"#include "uploading.h"#include & ...

  4. swift学习第十一天:类的定义

    一: 主要内容 类的介绍和定义 类的属性 类的构造函数 一. 类的介绍和定义 Swift也是一门面向对象开发的语言 面向对象的基础是类,类产生了对象 在Swift中如何定义类呢? class是Swif ...

  5. ModSecurity防御暴力破解

    http://www.modsecurity.org/ ModSecurity防御暴力破解 在阅读本文前,先简单了解下什么是ModSecurity,ModSecurity是一个入侵探测与阻止的引擎.它 ...

  6. thinkphp3.2.3 excel导出,下载文件,包含图片

    关于导出后出错的问题 https://segmentfault.com/q/1010000005330214 https://blog.csdn.net/ohmygirl/article/detail ...

  7. (十三)RabbitMQ消息队列-VirtualHost与权限管理

    原文:(十三)RabbitMQ消息队列-VirtualHost与权限管理 VirtualHost 像mysql有数据库的概念并且可以指定用户对库和表等操作的权限.那RabbitMQ呢?RabbitMQ ...

  8. 编译Android下可用的FFmpeg+x264

    编译Android下可用的FFmpeg+x264 编译x264: 下载最新版的x264 ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ 1.解压 ...

  9. [Angular Unit Testing] Testing Component methods

    import {ComponentFixture, TestBed} from '@angular/core/testing'; import {BrowserDynamicTestingModule ...

  10. [Docker] Accessing a Container

    If you want to get into container and look around, you can use: docker container exec to run against ...