使用URLConnection实现post表单提交
来源:互联网 发布:步态分析数据 编辑:程序博客网 时间:2024/05/16 15:04
首先介绍下URLConnection,
URLConnection是一个抽象类,表示指向url资源的活动连接,URLConnection有两个不同的但相关的用途。
首先,与URL相比,他对服务器的交互提供了更多的控制。URLConnection可以检查服务器发送的首部,并相应
的做出相应,它可以设置客户端请求中使用的首部字段。除此之外,URLConnection可以用POST、PUT和其他HTTP
请求想服务器发送数据。
首先直接看实现代码:
核心方法:
public InputStream post() throws IOException{URLConnection uc = url.openConnection();uc.setDoOutput(true);try (OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream(),"UTF-8")){out.write(query.toString());out.write("\r\n");out.flush();} catch (Exception e) {e.printStackTrace();}return uc.getInputStream();}
如上代码可知,
必须要有uc.setDoOutput(ture);这一行,
表示可以向服务器输入数据。
接着,获取outputStream,并写入相关查询行。
接下来看其他相关类代码:
package anla.Network.uriAndUrl;import java.net.URLEncoder;public class QueryString {private StringBuilder query = new StringBuilder();public synchronized void add(String name,String value){query.append('&');encode(name,value);}public synchronized void encode(String name,String value){try {query.append(URLEncoder.encode(name,"UTF-8"));query.append('=');query.append(URLEncoder.encode(value, "UTF-8"));} catch (Exception e) {e.printStackTrace();}}public synchronized String getQuery(){return query.toString();}@Overridepublic String toString() {return super.toString();}}
以及整个类:
package anla.Network.urlConnection;import java.io.IOException;import java.io.InputStream;import java.io.OutputStreamWriter;import java.net.URL;import java.net.URLConnection;import anla.Network.uriAndUrl.QueryString;public class FormPoster {private URL url;private QueryString query = new QueryString();public FormPoster (URL url){if(!url.getProtocol().toLowerCase().startsWith("http")){throw new IllegalArgumentException("Posting only works for http URLs");}this.url = url;}public void add(String name,String value){query.add(name, value);}public URL getURL(){return this.url;}public InputStream post() throws IOException{URLConnection uc = url.openConnection();uc.setDoOutput(true);try (OutputStreamWriter out = new OutputStreamWriter(uc.getOutputStream(),"UTF-8")){out.write(query.toString());out.write("\r\n");out.flush();} catch (Exception e) {e.printStackTrace();}return uc.getInputStream();}}
有时间去研究下httpclient,看核心原理是否是这样的。
阅读全文
0 0
- 使用URLConnection实现post表单提交
- [转载]java中用URLConnection 类post方式提交表单
- [转载]java中用URLConnection 类post方式提交表单
- java中用URLConnection 类post方式提交表单
- java中用URLConnection 类post方式提交表单
- Android使用URLConnection实现post和get
- Java 使用 URLConnection 模拟 Http Get和Post 提交
- Java 使用 URLConnection 模拟 Http Get和Post 提交
- 使用URLConnection提交请求
- 使用 URLConnection提交请求
- JavaScript 实现POST方式提交表单
- ajax使用POST方法提交表单
- ajax使用POST方法提交表单
- 【转】ajax使用POST方法提交表单
- Android移动开发-使用URLConnection提交请求的实现
- URLConnection POST GET提交保持Session
- Android 使用URLConnection提交请求
- Android 使用URLConnection提交请求
- 20170814-20170820
- 文件上传类
- mybatis之多对多映射查询(十二)
- Elastic Search权威指南 第四章 映射与分析
- hdu 6158 The Designer
- 使用URLConnection实现post表单提交
- Web网页实现计算器功能
- HDU 4937Lucky Number
- u-boot移植--3、DM9000网卡移植
- Elastic Search权威指南 第五章 结构化查询
- 不要62
- 设计模式之装饰者模式
- Oracle之使用proc查询多行数据
- opencv中findContours 和drawContours画图函数