使用标准http协议实现,(HttpUrlConneciton),不使用第三方包

一、get请求
URL url=new URL("http://www.baidu.com/s?wd=abcdefg");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream is = conn.getInputStream();
is.read(.....
二、简单post请求
只需要将参数用 & 和 = 连接,然后用流写出去就行了。
URL url=new URL("http://www.baidu.com/s");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream out=conn.getOutputStream();
out.write("wd=abcdefg&wd2=hijklmn".getBytes());
out.flush();
out.close();
InputStream is = conn.getInputStream();
is.read(.....
三、上传多文件
比如实现如下请求
参数:
name=zzp
age=23
文件:
icon=new File(file1);
music=new File(audio);
需要向服务器发送的数据如下:
首先需要定义一个boundary,一个随机字符串即可,但整个请求过程中需要是一致的。
BOUNDARY="abcdefg";
首先需要
conn.setRequestProperty("Content-Type","multipart/form-data;boundary=abcdefg");
全部数据请求如下(包括内容中的引号。包括所有换行与空行,换行符是\r\n)(两个横线之间的是需要发送的全部内容):
排版很麻烦。。换行总是被去掉,所以以下用[\r\n]表示换行,程序中直接往流里写\r\n就行了。

--abcdefg[\r\n]
Content-Disposition:form-data;name="name"[\r\n]
[\r\n]
zzp[\r\n]
--abcdefg[\r\n]
Content-Disposition:form-data;name="age"[\r\n]
[\r\n]
23[\r\n]
--abcdefg[\r\n]
Content-Disposition:form-data;name="icon";filename="file1其实这个是随便的"[\r\n]
Content-Type:image/png[\r\n]
[\r\n]
file1.getBytes()[\r\n]
--abcdefg[\r\n]
Content-Disposition:form-data;name="music";filename="mymusic.mp3"[\r\n]
Content-Type:audio/mpeg[\r\n]
[\r\n]
audio.getBytes()[\r\n]
--abcdefg--

源码下载: