HttpURLConnection get和post提交实例
JAVA中用URLCONNECTION 类POST方式提交表单

params = params.deleteCharAt(params.length() - 1); }
URL url = new URL(reqUrl); url_con = (HttpURLConnection) url.openConnection(); url_con.setRequestMethod("GET"); System.setProperty(".client.defaultConnectTimeout", String
temp.append(tempLine); temp.append(crlf); tempLine = rd.readLine(); } responseContent = temp.toString(); rd.close(); in.close(); } catch (IOException e) { logger.error("网络故障", e); } finally { if (url_con != null) { url_con.disconnect(); } }
String string = paramArray[i]; int index = string.indexOf("="); if (index > 0) {
String parameter = string.substring(0, index); String value = string.substring(index + 1, string
import org.apache.log4j.Logger;
/** * <pre> * HTTP 请求代理类 * </pre> * * @author benl * @version 1.0, 2007-7-3 */ public class HttpRequestProxy {
Android 中 HttpURLConnection 使用详解

服务器->客户端
服务器接收到客户端发来的请求后,会进行相应的处理,并向客户端输出信息,输出的信息包括响应头和响应体。
响应头 (Response Headers)
响应头也是一些键值对,如下所示:
响应头包含了服务器想要告诉客户端的一些元数据信息 ,注意不是数据,是元数据,比如通过响应头Content-Encoding告 诉客户端服务器所采用的压缩格式,响应头Content-Type告诉客户端响应体是什么格式的数据,再比如服务端可以通过多个 Set-Cookie响应头向客户端写入多条Cookie信息,等等。刚刚提到的几个请求头都是W3C规定的标准的请求头名称,我们也可
息如下所示:
请求URL(Request URL) 上图中的Request URL就是请求的Url地址,即https://,该Url没有附加其他的参数。其实可以通过?和&符向 URL地址后面追加一系列的键值对参数,比如地址https:///s?ie=utf-8&wd=Android,该Url包含两个键值 对,ie=utf-8,以及wd=Android,ie和wd是key,utf-8和Android分别是其对应的value,服务端可以获取ie和wd所对应的value的 值。由此我们可以看出,Url可以携带额外的数据信息。一般情况下,URL的长度不能超过2048个字符,即2KB,超过此限制
GET请求可以被缓存。 我们之前提到,当发送键值对信息时,可以在URL上面直接追加键值对参数。当用GET请求发送键值对时,键值对会随着URL一起
发送的。
由于GET请求发送的键值对时随着URL一起发送的,所以一旦该URL被黑客截获,那么就能看到发送的键值对信息,所以GET请求 的安全性很低,不能用GET请求发送敏感的信息(比如用户名密码)。 由于URL不能超过2048个字符,所以GET请求发送数据是有长度限制的。 由于GET请求较低的安全性,我们不应该用GET请求去执行增加、删除、修改等的操作,应该只用它获取数据。 POST: POST请求从不会被缓存。 POST请求的URL中追加键值对参数,不过这些键值对参数不是随着URL发送的,而是被放入到请求体中发送的,这样安全性稍微好
HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器。。。

HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器。
HTTP有两部分组成:请求与响应,下⾯分别整理。
⼀.HTTP请求1.HTTP请求格式:<request line><headers><blank line>[<request-body>]在HTTP请求中,第⼀⾏必须是⼀个请求⾏(request line),⽤来说明请求类型、要访问的资源以及使⽤的HTTP版本。
紧接着是⼀个⾸部(header)⼩节,⽤来说明服务器要使⽤的附加信息。
在⾸部之后是⼀个空⾏,再此之后可以添加任意的其他数据[称之为主体(body)]。
2.GET与POST区别HTTP 定义了与服务器交互的不同⽅法,最基本的⽅法是 GET 和 POST(Ajax开发,关⼼的只有GET请求和POST请求)。
GET与POST⽅法有以下区别:(1)在客户端,Get⽅式在通过URL提交数据,数据在URL中可以看到;POST⽅式,数据放置在HTML HEADER内提交。
(2) GET⽅式提交的数据最多只能有1024字节,⽽POST则没有此限制。
(3)安全性问题。
正如在(1)中提到,使⽤ Get 的时候,参数会显⽰在地址栏上,⽽ Post 不会。
所以,如果这些数据是中⽂数据⽽且是⾮敏感数据,那么使⽤ get;如果⽤户输⼊的数据不是中⽂字符⽽且包含敏感数据,那么还是使⽤ post为好。
(4)安全的和幂等的。
所谓安全的意味着该操作⽤于获取信息⽽⾮修改信息。
幂等的意味着对同⼀ URL 的多个请求应该返回同样的结果。
完整的定义并不像看起来那样严格。
换句话说,GET 请求⼀般不应产⽣副作⽤。
从根本上讲,其⽬标是当⽤户打开⼀个链接时,她可以确信从⾃⾝的⾓度来看没有改变资源。
⽐如,新闻站点的头版不断更新。
虽然第⼆次请求会返回不同的⼀批新闻,该操作仍然被认为是安全的和幂等的,因为它总是返回当前的新闻。
JavaHttpURLConnection发送post请求示例

JavaHttpURLConnection发送post请求⽰例public static Map<String, Object> invokeCapp(String urlStr, Map<String, Object> params) throws Exception {Map map = new HashMap();// post参数StringBuilder postData = new StringBuilder();for (Map.Entry<String,Object> param : params.entrySet()) {if (postData.length() != 0) {postData.append('&');}postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));postData.append('=');postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));}(postData.toString());byte[] postDataBytes = postData.toString().getBytes("UTF-8");//开始访问HttpURLConnection conn = (HttpURLConnection)(new URL(urlStr)).openConnection();conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));conn.setConnectTimeout(2000);conn.setReadTimeout(5000);conn.setDoOutput(true);conn.getOutputStream().write(postDataBytes);Reader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));StringBuilder sb = new StringBuilder();for (int c; (c = in.read()) >= 0;) {sb.append((char)c);}in.close();conn.disconnect();String responseStr = sb.toString();("RequestUtils - responseStr <== " + responseStr);if (StringHelper.isEmpty(responseStr)) {responseStr = "{}";}int statusCode = conn.getResponseCode();("RequestUtils - statusCode <== " + statusCode);if (HttpServletResponse.SC_OK == statusCode) {JSONObject dataJson = (JSONObject) JSONObject.parse(responseStr);map = new HashMap(dataJson);}return map;}。
Java利用HttpURLConnection发送post请求上传文件

Java利用HttpURLConnection发送post请求上传文件文章分类:Java编程在页面里实现上传文件不是什么难事,写个form,加上enctype ="multipart/form-data",在写个接收的就能够够了,没什么难的,若是要用.HttpURLConnection来实现文件上传,还真有点弄头.:-)1.先写个servlet把接收到的 HTTP 信息保留在一个文件中,看一下 form 表单到底封装了什么样的信息。
Java代码public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//获取输入流,是HTTP协议中的实体内容ServletInputStream in=request.getInputStream();//缓冲区byte buffer[]=new byte[1024];FileOutputStream out=new FileOutputStream("d:\\test.log");int len=sis.read(buffer, 0, 1024);while( len!=-1 ){out.write(buffer, 0, len);len=in.readLine(buffer, 0, 1024);}out.close();in.close();}来一个form表单。
<form name="upform" action="upload.do" method="POST" enctype="multipart/form-data">参数<input type="text" name="username"/><br/>文件1<input type="file" name="file1"/><br/>文件2<input type="file" name="file2"/><br/><input type="submit" value="Submit" /><br /></form>Java代码-----------------------------7da2e536604c8Content-Disposition: form-data; name="username"hello word-----------------------------7da2e536604c8Content-Disposition: form-data; name="file1";filename="D:\haha.txt"Content-Type: text/plainhahahahaha-----------------------------7da2e536604c8Content-Disposition: form-data; name="file2";filename="D:\huhu.txt"Content-Type: text/plainmessihuhu-----------------------------7da2e536604c8--研究下规律发觉有如下几点特点1.第一行是“ -----------------------------7d92221b604bc ”作为分隔符,然后是“ \r\n ” 回车换行符。
get请求和post请求的用法

get请求和post请求的用法
GET请求和POST请求都是HTTP协议的请求方式,用于向服务器请求数据。
它们的区别在于:
1. GET请求通过URL传递请求参数,而POST请求通过请求体传递请求参数。
2. GET请求的请求参数会显示在URL中,而POST请求的请求参数不会显示在URL中。
3. GET请求适合用于请求数据,而POST请求适合用于提交数据。
4. GET请求的请求参数长度有限制,一般为2048个字符,而POST请求的请求参数长度没有限制。
GET请求的用法:
1. 用于请求资源
2. 请求参数通过URL传递,可以通过URL参数直接获取参数
3. 没有上传文件等二进制数据的需求
4. 不需要向服务器发送敏感数据
POST请求的用法:
1. 用于向服务器提交数据
2. 请求参数通过请求体传递,需要通过请求体解析参数
3. 可以上传二进制数据,如文件、图片等
4. 需要向服务器发送敏感数据,如用户名密码等
综上所述,GET请求和POST请求的用法需要根据实际情况进行选择。
一般来说,GET请求适合用于请求数据,而POST请求适合用于提交数据。
同时,需要注意请求参数的传递方式及数据安全性。
Java-HttpURLConnection详细说明与实例
Java-HttpURLConnection详细说明与实例URLConnection 类是⼀个抽象类,代表应⽤程序和URL之间的通信连接,此类的实例可⽤于读取和写⼊此URL引⽤的资源。
URLConnection 允许使⽤GET,POST或者其他HTTP⽅法请求⽅式将请求数据发送到服务器。
使⽤URLConnection对象⼀般分为以下7步。
1:创建⼀个URL对象;2:通过URL对象的openConnection⽅法创建URLConnection对象;3:通过URLConnection对象提供的⽅法可以设置参数和⼀般请求属性。
常⽤的请求属性设置⽅式有以下⼏种:~public void setRequestProperty(String key,String value)设置指定的请求关键字对应的值~public void setDoInput(boolean doinput)设置是否使⽤URL连接进⾏输⼊,默认值为true~public void setDoOutput(boolean dooutput)设置是否使⽤URL连接进⾏输出,默认值为false,如果设置为true,就可以获取⼀个字节输出流,⽤于将数据发送到服务器~public void setUseCaches(boolean usecaches)设置此连接是否使⽤任何可⽤的缓存,默认值为true4:调⽤URLConnection对象的connect⽅法连接到该远程资源5:连接到服务器后,就可以查询头部信息了,查询头部信息常⽤⽅法有以下⼏种:~public String getHeaderField(String name)返回指定头字段的值~public Map<String,List<String>>getHeaderFields()返回头字段的不可修改的Map~public String getContentType()返回content-type头字段的值~public String getContentEncoding()返回content-encoding的值6:获取输⼊流访问资源数据。
http发送get和post请求
java发送GET,POST请求public class HttpUtil {/*** 向指定URL发送GET方法的请求* @param url 发送请求的URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try{String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);URLConnection connection = realUrl.openConnection();//设置头信息准备发送请求connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1;SV1)");connection.connect();in = new BufferedReader(newInputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}}catch(Exception e){System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}finally{try{if(in != null){in.close();}}catch(Exception e2){e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求* @param url发送请求的 URL* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
HttpURLConnection用法详解
HttpURLConnection⽤法详解参考:1. GET请求与POST请求HTTP协议是现在Internet上使⽤得最多、最重要的协议了,越来越多的Java应⽤程序需要直接通过HTTP协议来访问⽹络资源。
在介绍HttpURLConnection前,我们还是再来说⼀下URL请求最常⽤的两种⽅式:GET请求与POST请求。
GET请求发送的参数如果数据是英⽂字母或数字,则按原样发送,如果是空格,则转换为+,如果是中⽂或其他字符,则直接把字符串⽤BASE64加密,得出如%E4%BD%A0%E5%A5%BD这类似的字符串,其中%XX中的XX为该符号以16进制表⽰的ASCII。
POST请求的参数不是放在URL字符串⾥⾯,⽽是放在HTTP请求的正⽂内,请求的参数被封装起来以流的形式发送给服务端。
对于GET⽅式提交数据的⼤⼩,HTTP协议并没有硬性限制,但某些浏览器及服务器会对它进⾏限制,如IE对URL长度的限制是2083字节(2K+35)。
理论上POST也没有限制,可传较⼤量的数据。
POST的安全性要⽐GET的安全性⾼。
⽐如:通过GET提交数据,⽤户名和密码将明⽂出现在URL上,因为登录页⾯有可能被浏览器缓存,如果其他⼈查看浏览器的历史纪录,那么别⼈就可以拿到你的账号和密码了,除此之外,使⽤GET提交数据还可能会造成Cross-site request forgery(CSRF,跨站请求伪造)攻击。
⼀般来说,Get是向服务器索取数据的⼀种请求,⽽Post是向服务器提交数据的⼀种请求。
2. HttpURLConnection简介在JDK的包中已经提供了访问HTTP协议的基本功能的类:HttpURLConnection。
HttpURLConnection是Java的标准类,它继承⾃URLConnection,可⽤于向指定⽹站发送GET请求、POST请求。
它在URLConnection的基础上提供了如下便捷的⽅法:int getResponseCode(); // 获取服务器的响应代码。
JAVAHttpURLConnection发送post请求,数据格式为form-data,。。。
JAVAHttpURLConnection发送post请求,数据格式为form-data,。
public static String postFormData(String url, Map<String, Object> map) throws Exception {BufferedReader in = null;URL urls = new URL(url);HttpURLConnection connection = null;OutputStream outputStream = null;String rs = "";try {connection = (HttpURLConnection) urls.openConnection();connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=----footfoodapplicationrequestnetwork");connection.setDoOutput(true);connection.setDoInput(true);connection.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8");connection.setRequestProperty("Accept", "*/*");connection.setRequestProperty("Range", "bytes=" + "");connection.setConnectTimeout(8000);connection.setReadTimeout(20000);connection.setRequestMethod("POST");StringBuffer buffer = new StringBuffer();outputStream = connection.getOutputStream();Set<Entry<String, Object>> entries = map.entrySet();for (Entry<String, Object> entry : entries) {// 每次都清空buffer,避免写⼊上次的数据buffer.delete(0, buffer.length());buffer.append("------footfoodapplicationrequestnetwork\r\n");Object value = entry.getValue();if (!(value instanceof File)) {buffer.append("Content-Disposition: form-data; name=\"");buffer.append(entry.getKey());buffer.append("\"\r\n\r\n");buffer.append(entry.getValue());buffer.append("\r\n");outputStream.write(buffer.toString().getBytes());// System.out.println(buffer.toString());} else {buffer.append("Content-Disposition: form-data; name=\"" + entry.getKey() + "\"; filename=\"" + ((File) entry.getValue()).getName() + "\"\r\n"); buffer.append("Content-Type: " + "zip" + "\r\n\r\n");// System.out.println(buffer.toString());outputStream.write(buffer.toString().getBytes());File file = (File) entry.getValue();DataInputStream ins = new DataInputStream(new FileInputStream(file));int bytes = 0;byte[] bufferOut = new byte[1024];while ((bytes = ins.read(bufferOut)) != -1) {outputStream.write(bufferOut, 0, bytes);// System.out.print("A");}// ⽂件流后⾯添加换⾏,否则⽂件后⾯的⼀个参数会丢失outputStream.write("\r\n".getBytes());// System.out.println("\r\n");}}if (entries != null && map.size() > 0) {buffer.delete(0, buffer.length());buffer.append("------footfoodapplicationrequestnetwork--\r\n");// System.out.println(buffer.toString());}outputStream.write(buffer.toString().getBytes());try {try {connection.connect();if (connection.getResponseCode() == 200) {in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String line = "";while ((line = in.readLine()) != null) {rs += line;}}} catch (Exception e) {System.out.println("发⽣异常");rs = null;}return rs;} finally {try {outputStream.close();if (in != null){in.close();}} catch (Exception e) {}outputStream = null;if (connection != null)connection.disconnect();connection = null;}}public static void main(String[] args) {String url = "http://localhost:";HashMap<String, Object> map = new HashMap<String, Object>();map.put("lineSta", "0121");map.put("devTypeId", "04");map.put("deviceId", "034");map.put("inOutType", "10");map.put("versionNo", "1016");map.put("deviceTime", String.valueOf(System.currentTimeMillis()));File file = new File("file/01.zip"); // ⽂件路径,基于项⽬,在项⽬根⽬录建⽴file⽂件夹,01.zipmap.put("logFileName", file.getName()); // 上传⽂件名,与⽂件保持⼀致,这⾥⾃动获取map.put("uploadFile",file); // 上传的⽂件String returnStr2 = "";try {returnStr2 = HttpUtil.postFormData(url, map);} catch (Exception e) {System.out.println("上传,发⽣异常" + e.getMessage());}System.out.println(returnStr2);}使⽤java from-data原始⽅式上传过于⿇烦,需要⼿动组装数据,过于⿇烦,这⾥帮⼤家写了⼀个demo,直接调⽤即可,启动想要看到form-data的原始数据格式,请解除System.out.print 打印注释。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HttpURLConnection post提交实例
public static String getdata(){
String urlStr = "http://172.16.199.100:7001/pyxbcx/sshjq/web/sshjqcomm!jpyxbcx listcl.action";
String str = "";
try {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
StringBuffer params = new StringBuffer();
params.append("sql_itemno=1");
byte[] bypes = params.toString().getBytes();
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
conn.connect();
conn.getOutputStream().write(bypes);
conn.getOutputStream().flush();
conn.getOutputStream().close(); // flush and close
switch(conn.getResponseCode()) {
case 200:
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String line = "";
StringBuilder result = new StringBuilder();
while ((line = in.readLine()) != null)
result.append(line);
is.close();
str = result.toString();
break;
case 404:
str = "错误";
break;
case 500:
str = "错误2";
break;
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}
HttpURLConnection get提交实例
public static String getdata(){
// String urlStr = "http://172.16.199.100:7001/pyxbcx/sshjq/web/sshjqcomm!jpyxbcx listcl.action";
String urlStr = "http://localhost:8080/webquery/itemno/web/icc!itemstatuscn.ac tion?sql_ITEMNO=RB295114828CN";
String str = "";
try {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent",
"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
conn.connect();
switch(conn.getResponseCode()) {
case 200:
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String line = "";
StringBuilder result = new StringBuilder();
while ((line = in.readLine()) != null)
result.append(line);
is.close();
str = result.toString();
break;
case 404:
str = "错误";
break;
case 500:
str = "错误2";
break;
}
} catch (Exception e) {
e.printStackTrace();
}
return str;
}。