java 图片请求_java中使用scoket模拟http post请求发送图片或文件
最近遇到个问题,两个系统共用用户的头像,用户的头像在一个系统中保存,这就涉及到将图片通过scoket发送给另一个系统存储的问题,最初的思路是将图片读成byte[]数组,然后发送,但又发现,发送图片的同时还要发送密钥、uid、username等信息,好通过对方系统的验证,这就不好弄了,最后想出来,将图片读成字符串、然后模拟http post请求,将图片和密钥、uid等信息发送过去,在服务器端,将得到的byte[]数组写进文件中,最后实验真的成功了,我做了整理和消化,也有不足,请指教,代码如下:
//客户端
public static String readFileAsString(String fileName) throws Exception {
FileInputStream fis = new FileInputStream(fileName);
BufferedInputStream in = new BufferedInputStream(fis);
byte buffer[] = new byte[256];
StringBuffer picStr=new StringBuffer();
BASE64Encoder base64=new BASE64Encoder();
while (in.read(buffer)>= 0){
picStr.append(base64.encode(buffer));//进行64位编码
}
fis.close();
fis=null;
in.close();
in=null;
buffer=null;
return picStr.toString();
}
public static void main(String[] a) {
try {
File file=new File("c:/雪狼突击队.jpg");
//将文件读成字符串
String picString=readFileAsString(file.toString());
//URLEncode
picString="picdata="+URLEncoder.encode(picString, "UTF-8");
String url="http://localhost:8080/Test/index.jsp?uid=1&username=test&auth=098f6bcd4621d373cade4e832627b4f6";
Socket socket =new Socket(InetAddress.getByName(url),80);
DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
String message=""
+"POST "+url+" HTTP/1.1 \r\n "
+"Host: test.lingye.com \r\n "+"Accept: */* \r\n "
+"Cache-Control:no-cache \r\n" +"User-Agent: MSIE6.0; \r\n "
+"Content-Type: application/x-www-form-urlencoded \r\n "
+"Content-Length: "+picString.length()+" \r\n "
+"Connection: Close \r\n\r\n"//报头以两个\n作为结束标志
+picString+"\r\n ";//post数据
byte buffer[]=message.getBytes();
dos.write(buffer);
dos.flush();
dos.close();
//以上只进行了发送操作
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
//服务器端
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String picdata=request.getParameter("picdata");
BASE64Decoder base64=new BASE64Decoder();
//64位解码
byte[] buffer=base64.decodeBuffer(picdata);
//写进文件
FileOutputStream fos=new FileOutputStream("c:/雪狼突击队1.jpg");
fos.write(buffer);
fos.flush();
fos.close();
fos=null;
}
代码很粗糙,大家看原理就好了,我试过上传.rar也是可以的
2
顶
0
踩
分享到:
2009-09-04 22:25
浏览 5285
评论
1 楼
北极光之吻
2012-05-22
学习了,继续学习...
问一下啊,java有没有办法实现类似:用IOCP和winsock事件选择模型分别写一段服务器和客户端程序 的问题,老师让我们用C++,我不想用C++写
java 图片请求_java中使用scoket模拟http post请求发送图片或文件相关推荐
- java怎么将加载图片消除_Java中加载图片的方法
Java中添加图片,我知道有两种方法 用new ImageIcon("地址")函数,将图片放到JLabel中,然后把JLabel放到需要的地方就可以了 ImageIcon bg=n ...
- java命令模式_Java中的命令设计模式
java命令模式 在本教程中,我们将学习命令模式,这是一种重要的行为设计模式. 它具有一些重要的应用程序,例如在文本编辑器中实现撤消/重做功能. 在命令设计模式中,有一个命令对象位于发送方和接收方对象 ...
- java struts 框架_java中struts 框架的实现
该文章主要简单粗暴的实现了struts的请求转发功能. 其他的功能后续会慢慢补上. 最近在学习javassist的内容,看到一篇文章 大家一起写mvc 主要简单的描述了mvc的工作流程,同时实现了 ...
- java file 方法_JAVA中File的常用方法
一.File类中包含了很多获得文件或文件夹属性的方法,使用起来比较方便,下面将常见的方法介绍如下: a.createNewFile方法 public boolean createNewFile() t ...
- java异常面试_java中异常的面试
https://blog.csdn.net/qq_36523638/article/details/79363652 1) Java中的检查型异常和非检查型异常有什么区别? 这又是一个非常流行的Jav ...
- java jceks 密钥_Java中不同类型的密钥库(Keystore) – 概述
阅读: 877 密钥库是用于存储加密密钥和证书的存储工具 ,最常用于SSL通信,以证明服务器和客户端的身份.密钥库可以是文件或硬件设备.有三种类型的条目可以存储在密钥库中,取决于密钥库的类型,这三种类 ...
- java幻灯片效果_java中怎么实现幻灯片切换特效?详细实例展示
在java的使用过程中,我们会发现它的功能真的很强大,完成内容也极其丰富.今天就给大家介绍一下如何在java中实现幻灯片切换特效,以及通过实际的代码来为大家展示. 在最开始,需要说明的是,这个代码是实 ...
- java 自定义表达式_Java中使用Groovy实现自定义表达式解析
Groovy作为一种JVM-Based语言,目前普及程度正在提高.本文演示一下在Java类中,通过继承GDK的groovy.lang.Script类如何支持自定义表达式解析功能. 输入: 表示一行数据 ...
- java 异常 中文_Java中所有的运行时异常,带中文解释
展开全部 算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:Negat ...
最新文章
- ERP实施流程---计划部
- Fail to connect to camera service的几种原因和解决方法
- c语言实现语音检测vad_TWS+AI?国芯发布超低功耗语音芯片,可能是目前最理想方案...
- LVS——DR模式下的健康检查
- System.Data.OleDb.OleDbException: 未指定的错误的解决方法
- Rsync安装与配置
- ios开发学习--动画(Animation)效果源码分享--系列教程1
- linux下使用python_使用Linux环境下的vim Python开发环境
- 高通android刷机工具,步步高工具高通版刷机救砖教程图解
- Android长截屏(滚动截屏)实现原理
- 做个vbs整人小程序
- matlab设计理想带通滤波器 bpf(f_sf_b1_b2),QDPSK信号数字化解调器中带通滤波器的设计与仿真...
- ghostscript windows mac 下安装和 C++ 程序调用
- WinDriver Kernel Plugin开发
- 如何创建对电脑屏幕的自动点击的脚本
- uplink端口能接路由器吗_交换机常见的网络故障,你知道如何解决吗?
- 网页被劫持会带来的影响是什么?
- 二叉树的遍历(前序遍历,中序遍历,后序遍历)
- IDEA中连接MySQL时报错:Server returns invalid timezone
- 什么软件去视频水印 拍抖音技巧视频教程