JSONObject和URL以及HttpURLConnection的使用
1 将java对象类转成json格式
首先引入依赖jar文件
注意依赖文件的版本号,高版本可能没有对应的类
2 我的实体类中包含内部类注意内部类要public才能被序列化成json格式
import java.util.List;
public class EuityParam {
public EuityParam(String filter,List<String> args)
{
super();
this.filter=new Param0(filter);
this.args=new Param1(args);
}
private Param1 args;
public Param1 getArgs()
{
return args;
}
public void setArgs(Param1 _Param1)
{
this.args=_Param1;
}
private Param0 filter;
public Param0 getFilter()
{
return filter;
}
public void setFilter(Param0 _param0)
{
this.filter=_param0;
}
public class Param1
{
public List<String> getNameList() {
return nameList;
}
public void setNameList(List<String> nameList) {
this.nameList = nameList;
}
public Param1(List<String> nameList)
{
this.nameList=nameList;
}
private List<String> nameList;
}
public class Param0
{
public Param0(String key)
{
this.key=key;
}
private String key;
public String getKey()
{
return key;
}
public void setKey(String key)
{
this.key=key;
}
}
}
3 导入包文件
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
4 序列化
List<String> nameLst=new LinkedList<String>();
nameLst.add("AIR PRODUCTS & CHEMICALS INC");
nameLst.add("AMAZON.COM INC");
nameLst.add("ALTRIA GROUP INC");
nameLst.add("APPLE INC");
nameLst.add("ALPHABET INC");
EuityParam euityParam=new EuityParam("EquityNameMatching", nameLst); JSONObject jsonData= JSONObject.fromObject(euityParam);
System.out.println(jsonData);
5 结果:
{
"args": {
"nameList": [
"AIR PRODUCTS & CHEMICALS INC",
"AMAZON.COM INC",
"ALTRIA GROUP INC",
"APPLE INC",
"ALPHABET INC"
]
},
"filter": {
"key": "EquityNameMatching"
}
}
6 接口的调用,这个调用是post
private static String doPost(URL url, Map<Object, Object> nameValuePairs, String userAgent, int redirescts)
throws IOException {
// TODO Auto-generated method stub
StringBuilder response = new StringBuilder();
// HttpURLConnection可以处理重定向
HttpURLConnection connect = (HttpURLConnection) url.openConnection();
if (userAgent != null) {
connect.setRequestProperty("Authorization", userAgent);//设置http请求头
}
if (redirescts >= 0) {
// 连接到服务器之前关闭自动重定向
connect.setFollowRedirects(false);
}
// 设置请求的输出流
connect.setDoOutput(true);
// 构建往请求body内写入请求数据的写入流
OutputStream out = connect.getOutputStream();
try (PrintWriter write = new PrintWriter(out)) {
boolean first = true;
for (Entry<Object, Object> pair : nameValuePairs.entrySet()) {
if (first) {
first = false;
} else {
write.print('&');
}
String name = pair.getKey().toString();
String value = pair.getValue().toString();
write.print(name);
write.print('=');
write.print(URLEncoder.encode(value, "UTF-8"));
}
} // 获取请求的编码类型
String encoding = connect.getContentEncoding();
if (encoding == null) {
encoding = "UTF-8";
} // 如果redirect大于0表明有重定向
if (redirescts > 0) {
// 获取请求的响应码
int responseCode = connect.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_MOVED_PERM || responseCode == HttpURLConnection.HTTP_MOVED_TEMP
|| responseCode == HttpURLConnection.HTTP_SEE_OTHER) { // 获取重定向的位置
String location = connect.getHeaderField("Location");
if (location != null) {
java.net.URL base = connect.getURL();
// 断开本次连接
connect.disconnect();
return doPost(new URL(base, location), nameValuePairs, userAgent, redirescts - 1);
}
}
} else if (redirescts == 0) {
throw new IOException("重定向太多无法处理");
} // 获取响应流
InputStream responseStream = connect.getInputStream();
try (Scanner in = new Scanner(responseStream, encoding)) {
while (in.hasNextLine()) {
response.append(in.nextLine());
response.append("\n");
}
}
catch (Exception e)
{
// TODO: handle exception
InputStream err = connect.getErrorStream();
if (err == null) {
throw e;
}
try (Scanner in = new Scanner(err)) {
response.append(in.hasNextLine()); }
}
return response.toString();
}
JSONObject和URL以及HttpURLConnection的使用的更多相关文章
- [02] URL和HttpURLConnection类
1.URL的概念 统一资源定位符URL(Uniform Resource Locator)是www客户机访问Internet时用来标识资源的名字和地址. URL的基本格式是: <METHOD&g ...
- 文件上传---普通文件fileupload.jar和url文件httpUrlConnection
文件上传---普通文件和url文件 主要用来学习使用common-fileupload.jar和java.net.httpURLConnection 普通文件: //上传xls文件到临时目录 if ( ...
- Url,HTTPUrlConnection(一)
package com.cmy.urlcon; import java.io.BufferedReader; import java.io.IOException; import java.io.In ...
- 一.HttpClient、JsonPath、JsonObject运用
HttpClient详细应用请参考官方api文档:http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/apidocs/index.h ...
- AsyncTask异步加载和HttpURLConnection网络请求数据
//获得网络数据 private void huodeshuju() { //这里是使用线程,已注释掉 /*new Thread(){ public void ...
- HttpURLConnection从网上获取Json数据并解析详解
HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...
- HttpURLConnection实现两个服务端的对接
在企业开发中,很多时候需要用到两个服务端的对接,在java类中进行连接并传递参数,其中的HttpURLConnection是一种轻量化,并且简单的方法! package httptest; impor ...
- Java网络连接之HttpURLConnection、HttpsURLConnection
工具类包含两个方法: http请求.https请求 直接看代码: package com.jtools; import java.io.BufferedReader; import java.io.I ...
- HttpURLConnection 传输数据和下载图片
一.传输字符串数据 在Android中HttpURLConnection传输数据是必不可少的,我们继续在“AsyncTask(异步任务)”案例的基础上添加. 案例: 首先我们做一个jsp的服务端,文件 ...
随机推荐
- Python之Pandas操作csv文件dataframe
# -*- coding: utf-8 -*- # author:baoshan import pandas as pd def main(): aqi_data = pd.read_csv('chi ...
- python链接mysql pymysql
python链接mysql import pymysql conn = pymysql.connect(user=', database='gbt2019', charset='utf8') curs ...
- 【php】PHP制作QQ微信支付宝三合一收款码
分析 微信扫这个,支付宝扫那个,不仅要加载多张二维码,还要加css/js让它变的好看,作为一个又懒又不想写这些东西的程序猿来说,这可不行. 那能不能把QQ微信支付宝三合一,只需要扫一个收款码就行呢? ...
- 报错:(未解决)Opening socket connection to server master/192.168.52.26:2181. Will not attempt to authenticate using SASL (unknown error)
报错背景: CDH集群中,将kafka和Flume整合,将kafka的数据发送给Flume消费. 启动kafka的时候正常,但是启动Flume的时候出现了报错现象. 报错现象: DH--.cdh5./ ...
- Python中random模块生成随机数详解
Python中random模块生成随机数详解 本文给大家汇总了一下在Python中random模块中最常用的生成随机数的方法,有需要的小伙伴可以参考下 Python中的random模块用于生成随机数. ...
- LeetCode_349. Intersection of Two Arrays
349. Intersection of Two Arrays Easy Given two arrays, write a function to compute their intersectio ...
- WebException 请求被中止: 操作超时
HTTP 请求时出现 :WebException 请求被中止: 操作超时 处理HTTP请求的服务器 CPU 100% ,重启后正常.
- MySQL语句增加字段,修改字段名,修改类型,修改默认值
原文地址:https://blog.csdn.net/kimgoo/article/details/54630257 增加字段:alter table 表名 ADD 字段 类型 约束 [默认值 注释] ...
- google浏览器插件fq教程
google插件fq教程 思路 谷歌浏览器的应用市场 上有很多vp恩插件,不过要能访问谷歌浏览器的应用市场就得fq出去才行,而有一个很棒的插件就可以访问谷歌的旗下的一些东西,例如邮箱,Google搜索 ...
- 无聊的活动/缘生意转(2018 Nova OJ新年欢乐赛B题)解题报告
题目2(下面的太抓 我重新写了个背景 其他都一样) 无聊的活动 JLZ老师不情愿的参加了古风社一年一度的活动,他实在不觉得一群学生跳舞有什么好看,更不明白坐在身后的学生为什么这么兴奋(看小姐姐),于是 ...