java中GET方式提交和POST方式提交
java中GET方式提交的示例:
/**
* 获取关注列表;
* @return
*/
@SuppressWarnings("unchecked")
public static ArrayList<String> getUserList() {
StringBuffer bufferRes = new StringBuffer();
ArrayList<String> users = null;
try {
URL realUrl = new URL("https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + TokenProxys.accessTokens());
//URL realUrl = new URL("https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=" + TokenProxys.accessTokens());
HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();
// 请求方式
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("GET");
conn.setUseCaches(false);
conn.setInstanceFollowRedirects(true);
conn.setRequestProperty("Content-Type","application/json");
conn.connect();
// 获取URLConnection对象对应的输入流
InputStream in =conn.getInputStream();
BufferedReader read =new BufferedReader(new InputStreamReader(in,"UTF-8"));
String valueString =null;
while ((valueString=read.readLine())!=null){
bufferRes.append(valueString);
}
System.out.println(bufferRes);
in.close();
if (conn !=null){
// 关闭连接
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
//将返回的字符串转换成json
JSONObject jsonObject = JSONObject.fromObject(bufferRes.toString());
//解析json中表示openid的列表
JSONObject data = (JSONObject)jsonObject.get("data");
if(data!=null){
//将openid列表转化成数组保存
users = new ArrayList<String>(data.getJSONArray("openid"));
//获取关注者总数
int count = Integer.parseInt(jsonObject.get("total").toString());
if(count>1000){
JSONObject object = jsonObject;
String next_openid = null;
JSONObject ob_data = null;
ArrayList<String> ob_user = null;
//大于1000需要多次获取,或许次数为count/1000
for(int i=0;i<count/1000;i++){
//解析出下次获取的启示openid
next_openid = object.get("next_openid").toString();
object = getUserJson(next_openid);
ob_data = (JSONObject)object.get("data");
ob_user = new ArrayList<String>(ob_data.getJSONArray("openid"));
for(String open_id : ob_user){
//将多次获取的openid添加到同一个数组
users.add(open_id);
}
}
}
}
return users;
}
java中POST方式提交的示例1:
public static void main(String[] args) {
try {
String pathUrl = "https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=zN6OKXWAdBKdwPUc1CFXIW-czck3W1CURoKr38Xy7jjDpyIxrpmSyfglAY1Bnvq3FePZbFVUzpeLfWC9lml7ENeApBJhSDXE-BRrHCmBsTk4gUI6DxxDgrGekrdkUSDkETAhAGAZOV";
// 建立连接
URL url = new URL(pathUrl);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
// //设置连接属性
httpConn.setDoOutput(true);// 使用 URL 连接进行输出
httpConn.setDoInput(true);// 使用 URL 连接进行输入
httpConn.setUseCaches(false);// 忽略缓存
httpConn.setRequestMethod("POST");// 设置URL请求方法
//POST请求设置所需要的JSON数据格式{"tagid" : 134,"next_openid":""//第一个拉取的OPENID,不填默认从头开始拉取}
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("tagid", 104);
map.put("next_openid","");
list.add(map);
JSONArray arry=JSONArray.fromObject(map);
String requestString = arry.toString().replace("[", "").replace("]", "");
// 设置请求属性
// 获得数据字节数据,请求数据流的编码,必须和下面服务器端处理请求流的编码一致
byte[] requestStringBytes = requestString.getBytes("utf-8");
httpConn.setRequestProperty("Content-length", "" + requestStringBytes.length);
httpConn.setRequestProperty("Content-Type", "application/octet-stream");
httpConn.setRequestProperty("Connection", "Keep-Alive");// 维持长连接
httpConn.setRequestProperty("Charset", "UTF-8");
// 建立输出流,并写入数据,此方法是同样适用于参数中有文字的方法
OutputStream outputStream = httpConn.getOutputStream();
outputStream.write(requestStringBytes);
outputStream.close();
// 获得响应状态
int responseCode = httpConn.getResponseCode();
if (HttpURLConnection.HTTP_OK == responseCode) {// 连接成功
// 当正确响应时处理数据
StringBuffer sb = new StringBuffer();
String readLine;
BufferedReader responseReader;
// 处理响应流,必须与服务器响应流输出的编码一致
responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "utf-8"));
while ((readLine = responseReader.readLine()) != null) {
sb.append(readLine).append("\n");
}
responseReader.close();
System.err.println(sb.toString());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
post请求向服务器传递参数的另外一种形式,示例2:
服务器端接受参数:String datas= request.getParameter("datas");
public static void sendPost() throws IOException{
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("phone", "phone");
list.add(map);
JSONArray arry=JSONArray.fromObject(map);
String requestString = arry.toString();
String result="";
PrintWriter out = null;
BufferedReader in = null;
String pathUrl = "http://shuilangyizu.iask.in/app/appWechatDataController/wchatInfo.do";
URL url=null;
try {
url = new URL(pathUrl);
URLConnection connect = url.openConnection();
connect.setRequestProperty("content-type","application/x-www-form-urlencoded;charset=utf-8");
connect.setRequestProperty("method","POST");
byte[] bytes= requestString.getBytes("utf-8") ;
connect.setDoOutput(true);
connect.setDoInput(true);
out = new PrintWriter(connect.getOutputStream());
// 发送请求参数:此方式遇到中文容易乱码,所以如果参数中有中文建议用上一种方式
out.print("datas="+requestString);
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connect.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
System.out.println(result);
in.close();
out.close();
} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
接收数据服务器上接收数据的方式,示例1:
@RequestMapping(value = "/synSystemData")
public void synSystemData(HttpServletRequest request, HttpServletResponse response) throws Exception {
boolean isGet = request.getMethod().toLowerCase().equals("get");
if (!isGet) {
String inputLine;
String notityJson = "";
try {
while ((inputLine = request.getReader().readLine()) != null) {
notityJson += inputLine;
}
request.getReader().close();
} catch (Exception e) {
e.printStackTrace();
}
if(StringUtil.isEmpty(notityJson )){
notityJson = request.getParameter("content");
}
String json= java.net.URLDecoder.decode(notityJson , "UTF-8");
if(StringUtils.isNotEmpty(json)){
StringBuffer sb = new StringBuffer();
sb.append("ok");
response.getWriter().write(sb.toString());
} }
wirte.flush();
wirte.close();
}
接收数据服务器上接收数据的方式,示例2:
/**
* 接收从发送数据服务器传过来的json串
* @param request
* @param response
* @throws Exception
*/
@RequestMapping(value = "/synSystemData")
public void synSystemData(HttpServletRequest request, HttpServletResponse response) throws Exception{
String result = "error";
boolean isPost = request.getMethod().toLowerCase().equals("post");
PrintWriter wirte = null;
wirte = response.getWriter();
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8"); if (isPost) {
String json = request.getParameter("datas");
System.out.println(json);
wirte.print(result);
}else{
wirte.print("");
}
wirte.flush();
wirte.close();
}
java中GET方式提交和POST方式提交的更多相关文章
- JAVA中单例模式的几种实现方式
1 线程不安全的实现方法 首先介绍java中最基本的单例模式实现方式,我们可以在一些初级的java书中看到.这种实现方法不是线程安全的,所以在项目实践中如果涉及到线程安全就不会使用这种方式.但是如果不 ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- JAVA中集合输出的四种方式
在JAVA中Collection输出有四种方式,分别如下: 一) Iterator输出. 该方式适用于Collection的所有子类. public class Hello { public stat ...
- java中数组复制的两种方式
在java中数组复制有两种方式: 一:System.arraycopy(原数组,开始copy的下标,存放copy内容的数组,开始存放的下标,需要copy的长度); 这个方法需要先创建一个空的存放cop ...
- JAVA中的四种JSON解析方式详解
JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...
- Java 中UDP原理机制及实现方式介绍(建议阅读者阅读前了解下Java的基础知识,一方便理解)
1.基本概念介绍: 首先得简单介绍下UDP. UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层, ...
- Java中String对象两种赋值方式的区别
本文修改于:https://www.zhihu.com/question/29884421/answer/113785601 前言:在java中,String有两种赋值方式,第一种是通过“字面量”赋值 ...
- Java中创建线程的三种方式以及区别
在java中如果要创建线程的话,一般有3种方法: 继承Thread类: 实现Runnable接口: 使用Callable和Future创建线程. 1. 继承Thread类 继承Thread类的话,必须 ...
- Java中实现多线程的两种方式之间的区别
Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...
- 细说java中Map的两种迭代方式
曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...
随机推荐
- Html基础知识详解
一定要做的符合客户要求,不是自己认为对的. 一.基础标签 1.1 大小颜色位置 <!DOCTYPE HTML> <html> <head> <meta htt ...
- Jquery UI 中Tree组件的json格式,java递归拼接demo
数据库中表数据,如下图: 实现的需求是,如果suporgcode数据为null 的情况下,表示在一级节点 "请选择" 的二级节点,然后是如:3和36 是1的子节点,一步一步的节点延 ...
- TCP/IP具体解释--TCP/UDP优化设置总结& MTU的相关介绍
首先要看TCP/IP协议,涉及到四层:链路层,网络层.传输层,应用层. 当中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Data)在应 ...
- .NET:字符集和编码学习总结
背景 一直没有深入的学习字符集和编码的知识(现在也没有深入),今天查阅了一些资料,弄明白了一些事情,本文就简单记录一下. 字符集和编码 字符集是指一些符号组成的集合,编码是对指定字符集如何表示为字节的 ...
- [翻译] ColourClock 将时间值转换成背景色
ColourClock 将时间值转换成背景色 https://github.com/bennyguitar/ColourClock This project converts Time to Hex/ ...
- C99规范
. 增加restrict指针 C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象.restrict指针指针主 ...
- Spring Bean 注入 1 - 构造方法注入,属性注入,自动装配
1.代码结构图 xxx 2.bean代码 package com.xxx.bean; /** * Created with IntelliJ IDEA. * User: zhenwei.liu * D ...
- Tomcat与Servlet工作流程
什么是Tomcat? Tomcatserver是一个免费的开放源码的Web 应用server,属于轻量级应用server. 什么是Servlet? Servlet是在server上执行的小程序.,说白 ...
- MySQL数据类型varchar详解
1.varchar(N)的逻辑意义从MySQL 4.1开始,varchar(N)中的N指的是该字段最多能存储多少个字符(characters),不是字节数.不管是一个中英文字符或者数字.或者一个汉字, ...
- iOS:提示框(警告框)控件UIAlertView的详解
提示框(警告框)控件:UIAlertView 功能:当点击按钮或标签等时,弹出一个提示框,显示必要的提示,然后通过添加的按钮完成需要的功能. 类型:typedef NS_ENUM(NSInte ...