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相关】相关推荐

  1. 转载 java开发基础 https://blog.csdn.net/jiangjiewudi/article/details/9565749

    Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点: 1.掌握项目开发的基本步骤 2.具备极强的面向对象的分析与设计技巧 3.掌握用例驱 ...

  2. 安卓逆向必备之Java开发基础(上)

    文章目录 1.环境搭建 2.初识Java 3.注释 4.变量 6.输入和输出 5.条件语句 6.循环语句 7. 数据类型相关 7.1 整数类型 7.2 字符 7.3 字符串 7.4 数组 7.5 Li ...

  3. Java开发基础面试知识点

    目录 Java基础 数据类型 ==和equals的区别 hashcode()和equals()方法 String.StringBuilder.StringBuffer区别 访问权限修饰符 final修 ...

  4. Java开发基础面试题,Java开发人员不得不收集的代码

    前言 今天的分享主要是讲下这个 redis,什么是缓存雪崩.穿透和击穿.这三个技术问题是我们平时开发工作中和面试过程中,必须要会的知识点,因为目前的互联网系统没有几个不需要用到缓存的,只要用到缓存的话 ...

  5. Java开发基础——配置文件的写入与读取

    在实际的项目开发中,配置文件是一个非常重要的工具,我们可以把全局的配置写入文件,然后在需要的时候再取出来.且在项目的任何位置都可以使用,非常方便.可以把配置文件理解为一个临时性的数据库.在IDEA中, ...

  6. Java开发基础面试题,北大青鸟java培训多久

    Java NIO 基本介绍 Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API.从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被 ...

  7. Java开发基础_03

    五. 面向对象 面向过程 : 以函数为最小单位(方法),数据独立于函数之外,以过程步骤为主(怎么做)-执行者 面向对象 : 以类对象为最小单位,类包括数据+方法,是以对象为主(谁来做)-指挥者 1. ...

  8. Java开发字符串JSON处理

    需求很简单就是数据库存json. 数据库字段   varchar 入参request   定义  List<String>   如果不定义这个 而是定义String那么需要加"/ ...

  9. JAVA开发基础之使用IDEA导出JAR包

    1.如果工程存在不相干的其他内容,新建工程拉入相关内容比较好. 下面内容来源:https://blog.csdn.net/qaz2016wsx/article/details/83478445?ops ...

  10. 前端开发基础——网络相关(TCP、UDP、HTTP等)

    文章目录 网络分层模型 TCP和UDP 什么是TCP/IP.TCP.UDP TCP和UDP的区别 TCP三次握手 TCP四次挥手 HTTP和HTTPS HTTP和HTTPS的区别 HTTP请求头 HT ...

最新文章

  1. 我的 FPGA 学习历程(13)—— 电子钟项目
  2. linux c 创建子进程执行任务 简介
  3. MFC中关于虚函数的一些问题
  4. [C++]试一试结构体struct node的构造函数
  5. C# DataSet转JSON
  6. F - Warm up - hdu 4612(缩点+求树的直径)
  7. HTML5 — 知识总结篇《V》【a元素】
  8. 取消计算机关机,系统自动关机怎么取消以及系统自动关机命令
  9. ArcGIS教程 - 1 绪论
  10. 精通 CSS+DIV 网页样式与布局 116
  11. Linux电源管理_Wakeup events framework--(二)
  12. c语言怎么做查询系统,c语言编辑查询系统,可实现增删改查
  13. 传统语音识别介绍【二】—— 特征提取
  14. jeecg-boot环境搭建
  15. 安卓apk修改(Android反编译apk)
  16. 进栈,出栈的详细知识
  17. 人工智能下的中秋祝福
  18. RESTful API接口基本内容
  19. B站首页内容运营分析
  20. Intelligent Designer

热门文章

  1. python判断闰年程序_Python 判断闰年
  2. turtle画哆啦A梦(不止一个哦 多个有趣的画)
  3. 怎么删除微信的手机充值服务器,微信怎么开启和取消自动充值话费功能?
  4. SQL语句基础1:对数据库和表的增删改操作,初始化时约束和数据的加入
  5. 计算机网络——链路层知识总结
  6. 显示Java国家列表
  7. 数字化转型的本质(10个关键词)
  8. 世界那么大,如何去看看?进入新世界的框架和脉络
  9. GE指数和Gini系数(补充)在经济空间差异中的作用
  10. 特征图注意力_深度学习入门之注意力机制