JAVA 开发基础【JSON相关】
2019独角兽企业重金招聘Python工程师标准>>>
package test;import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.json.simple.JSONObject;import cn.com.wooboo.utils.HttpUtils;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.analysis.bean.Ip;
import com.analysis.bean.Visitlog;public class TestJson {public static void main(String[] args) throws IOException {Ip ip = new Ip();String ipString = HttpUtils.sendGet("220.168.0.80");System.err.println(ipString);Ip ip2 = JSON.parseObject(ipString, Ip.class);System.out.println(ip2.getData().get("region"));System.out.println(ip2.getData().get("city"));System.out.println(ip2.getData().get("area"));String ipString2 = JSON.toJSONString(ip2);System.out.println(ipString2);}}
在我们的这一个JSON 小程序之中我们依据具体的ip “192.168.0.80” 在HttpUtils之中
依赖的是淘宝的一个ip地址库
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;import javax.servlet.http.HttpServletRequest;public class HttpUtils {public static String getRemoteHost(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;}/*** 向指定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);// 打开和URL之间的连接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();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求* * @param url* 发送请求的 URL* @return 所代表远程资源的响应结果*/public static String sendGet(String ip) {String baseUrl = "http://ip.taobao.com/service/getIpInfo.php?ip=";String url = baseUrl + ip;String result = "";BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接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();// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流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 的形式。* @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求* * @param url* 发送请求的 URL* @return 所代表远程资源的响应结果*/public static List<String> sendGetList(String url) {List<String> list = new ArrayList<String>();BufferedReader in = null;try {URL realUrl = new URL(url);// 打开和URL之间的连接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();// 获取所有响应头字段// Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段// for (String key : map.keySet()) {// System.out.println(key + "--->" + map.get(key));// }// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {System.out.println(line);list.add(line);}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return list;}public static void main(String[] args) {// //发送 GET 请求// String// s=HttpUtils.sendGet("http://localhost:6144/Home/RequestString",// "key=123&v=456");// System.out.println(s);//// //发送 GET 请求// String// sg=HttpUtils.sendGet("http://localhost:6144/Home/RequestString?key=123&v=456");// System.out.println(sg);// 发送 POST 请求String sr = HttpUtils.sendPost("http://127.0.0.1/WBCps/a/service/adList", "en=123212312");System.out.println(sr);}public static String readContentFromGet(String url) {try {// 拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码URL getUrl = new URL(url);// 根据拼凑的URL,打开连接,URL.openConnection()函数会根据// URL的类型,返回不同的URLConnection子类的对象,在这里我们的URL是一个http,因此它实际上返回的是HttpURLConnectionHttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();// 建立与服务器的连接,并未发送数据connection.connect();// 发送数据到服务器并使用Reader读取返回的数据BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String lines;String result = "";while ((lines = reader.readLine()) != null) {result += lines;}reader.close();// 断开连接connection.disconnect();return result;} catch (IOException e) {e.printStackTrace();return "";}}public static String readContentFromPost(String url, String content) {try {// Post请求的url,与get不同的是不需要带参数URL postUrl = new URL(url);// 打开连接HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();// 打开读写属性,默认均为falseconnection.setDoOutput(true);connection.setDoInput(true);// 设置请求方式,默认为GETconnection.setRequestMethod(" POST ");// Post 请求不能使用缓存connection.setUseCaches(false);// URLConnection.setFollowRedirects是static 函数,作用于所有的URLConnection对象。// connection.setFollowRedirects(true);// URLConnection.setInstanceFollowRedirects 是成员函数,仅作用于当前函数connection.setInstanceFollowRedirects(true);// 配置连接的Content-type,配置为application/x-// www-form-urlencoded的意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode进行编码connection.setRequestProperty(" Content-Type "," application/x-www-form-urlencoded ");// 连接,从postUrl.openConnection()至此的配置必须要在 connect之前完成,// 要注意的是connection.getOutputStream()会隐含的进行调用 connect(),所以这里可以省略// connection.connect();DataOutputStream out = new DataOutputStream(connection.getOutputStream());// 正文内容其实跟get的URL中'?'后的参数字符串一致// DataOutputStream.writeBytes将字符串中的16位的 unicode字符以8位的字符形式写道流里面if (content != null)out.writeBytes(content);out.flush();out.close(); // flush and closeBufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;String result = "";while ((line = reader.readLine()) != null) {result += line;}reader.close();return result;} catch (IOException e) {e.printStackTrace();return "";}}
}
转载于:https://my.oschina.net/infiniteSpace/blog/301047
JAVA 开发基础【JSON相关】相关推荐
- 转载 java开发基础 https://blog.csdn.net/jiangjiewudi/article/details/9565749
Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1.掌握项目开发的基本步骤 2.具备极强的面向对象的分析与设计技巧 3.掌握用例驱 ...
- 安卓逆向必备之Java开发基础(上)
文章目录 1.环境搭建 2.初识Java 3.注释 4.变量 6.输入和输出 5.条件语句 6.循环语句 7. 数据类型相关 7.1 整数类型 7.2 字符 7.3 字符串 7.4 数组 7.5 Li ...
- Java开发基础面试知识点
目录 Java基础 数据类型 ==和equals的区别 hashcode()和equals()方法 String.StringBuilder.StringBuffer区别 访问权限修饰符 final修 ...
- Java开发基础面试题,Java开发人员不得不收集的代码
前言 今天的分享主要是讲下这个 redis,什么是缓存雪崩.穿透和击穿.这三个技术问题是我们平时开发工作中和面试过程中,必须要会的知识点,因为目前的互联网系统没有几个不需要用到缓存的,只要用到缓存的话 ...
- Java开发基础——配置文件的写入与读取
在实际的项目开发中,配置文件是一个非常重要的工具,我们可以把全局的配置写入文件,然后在需要的时候再取出来.且在项目的任何位置都可以使用,非常方便.可以把配置文件理解为一个临时性的数据库.在IDEA中, ...
- Java开发基础面试题,北大青鸟java培训多久
Java NIO 基本介绍 Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API.从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被 ...
- Java开发基础_03
五. 面向对象 面向过程 : 以函数为最小单位(方法),数据独立于函数之外,以过程步骤为主(怎么做)-执行者 面向对象 : 以类对象为最小单位,类包括数据+方法,是以对象为主(谁来做)-指挥者 1. ...
- Java开发字符串JSON处理
需求很简单就是数据库存json. 数据库字段 varchar 入参request 定义 List<String> 如果不定义这个 而是定义String那么需要加"/ ...
- JAVA开发基础之使用IDEA导出JAR包
1.如果工程存在不相干的其他内容,新建工程拉入相关内容比较好. 下面内容来源:https://blog.csdn.net/qaz2016wsx/article/details/83478445?ops ...
- 前端开发基础——网络相关(TCP、UDP、HTTP等)
文章目录 网络分层模型 TCP和UDP 什么是TCP/IP.TCP.UDP TCP和UDP的区别 TCP三次握手 TCP四次挥手 HTTP和HTTPS HTTP和HTTPS的区别 HTTP请求头 HT ...
最新文章
- 我的 FPGA 学习历程(13)—— 电子钟项目
- linux c 创建子进程执行任务 简介
- MFC中关于虚函数的一些问题
- [C++]试一试结构体struct node的构造函数
- C# DataSet转JSON
- F - Warm up - hdu 4612(缩点+求树的直径)
- HTML5 — 知识总结篇《V》【a元素】
- 取消计算机关机,系统自动关机怎么取消以及系统自动关机命令
- ArcGIS教程 - 1 绪论
- 精通 CSS+DIV 网页样式与布局 116
- Linux电源管理_Wakeup events framework--(二)
- c语言怎么做查询系统,c语言编辑查询系统,可实现增删改查
- 传统语音识别介绍【二】—— 特征提取
- jeecg-boot环境搭建
- 安卓apk修改(Android反编译apk)
- 进栈,出栈的详细知识
- 人工智能下的中秋祝福
- RESTful API接口基本内容
- B站首页内容运营分析
- Intelligent Designer