通过java.net.URLConnection发送HTTP请求的方法,遇到返回的是html/text格式,我想返回JSON,怎么办,急求

qq_28803955 2016-06-30 10:21:46
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;


public class gerenrz {

public static void main(String[] args) throws Exception {


System.out.println(doPost("HA", "49D762812B8E49437FD3443B8F0CE4BC", 0, "7150020160010634", "0001", "20160601", "20160622", 1, 20));

}






public static String doPost(String OrigDomain, String Token,Integer RequestType,String CardNo,String AcctType,String BeginDate,String EndDate,Integer PageNum,Integer PageSize) throws Exception {

String parameterData = "{\"OrigDomain\":\"" + OrigDomain + "\",\"Token\":\""+Token+"\",\"RequestType\":\""+ RequestType+"\",\"CardNo\":\"" + CardNo+"\",\"AcctType\":\"" +AcctType+"\",\"BeginDate\":\"" +BeginDate+"\",\"EndDate\":\""+EndDate+"\",\"PageNum\":\""+PageNum+"\",\"PageSize\":\""+PageSize+"\"}";

URL localURL = new URL("http://10.0.4.107:5500/v1/account/AccBookQuery");
URLConnection connection = localURL.openConnection();

HttpURLConnection httpurlconnection = (HttpURLConnection)connection;
httpurlconnection.setDoOutput(true);
httpurlconnection.setRequestMethod("POST");
httpurlconnection.setRequestProperty("Accept-Charset", "utf-8");
httpurlconnection.setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=UTF-8");





OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader reader = null;
StringBuffer resultBuffer = new StringBuffer();
String tempLine = null;


try {
outputStream = httpurlconnection.getOutputStream();
outputStreamWriter = new OutputStreamWriter(outputStream);

outputStreamWriter.write(parameterData.toString());
outputStreamWriter.flush();

if (httpurlconnection.getResponseCode() >= 300) {
throw new Exception("HTTP Request is not success, Response code is " + httpurlconnection.getResponseCode());
}

inputStream = httpurlconnection.getInputStream();
inputStreamReader = new InputStreamReader(inputStream);
reader = new BufferedReader(inputStreamReader);

while ((tempLine = reader.readLine()) != null) {
StringBuffer aaa= resultBuffer.append(tempLine);


}

} finally {

if (outputStreamWriter != null) {
outputStreamWriter.close();
}

if (outputStream != null) {
outputStream.close();
}

if (reader != null) {
reader.close();
}

if (inputStreamReader != null) {
inputStreamReader.close();
}

if (inputStream != null) {
inputStream.close();
}

}

return resultBuffer.toString();
}



}


自己试试之后遇到一个问题
当 httpurlconnection.setRequestProperty("content-type", "application/json"); 返回的是html/text格式的东西
当 httpurlconnection.setRequestProperty("content-type", "application/x-www-form-urlencoded;charset=UTF-8"); 就会报应用域代码错误
百度了很久 无法解决,求大神!!!!
...全文
514 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_28803955 2016-06-30
  • 打赏
  • 举报
回复
引用 6 楼 autfish 的回复:
URL localURL = new URL("http://10.0.4.107:5500/v1/account/AccBookQuery"); 改成 URL localURL = new URL("http://10.0.4.107:5500/v1/account/AccBookQuery?format=json"); 试试
谢谢
大雨将至 2016-06-30
  • 打赏
  • 举报
回复
URL localURL = new URL("http://10.0.4.107:5500/v1/account/AccBookQuery"); 改成 URL localURL = new URL("http://10.0.4.107:5500/v1/account/AccBookQuery?format=json"); 试试
qq_28803955 2016-06-30
  • 打赏
  • 举报
回复
[2016-06-30 11:02:01][Info]HttpMethod:POST AbsoluteUri:http://10.0.4.107:5500/v1/account/AccBookQuery PathInfo:/account/AccBookQuery IpAddress:10.0.4.159 ForwardedFor: RequestBody:{"OrigDomain":"HA","Token":"49D762812B8E49437FD3443B8F0CE4BC","RequestType":"0","CardNo":"7150020160010634","AcctType":"0001","BeginDate":"20160601","EndDate":"20160622","PageNum":"1","PageSize":"20"} ResponseDto:{"CardNo":"7150020160010634","TradeCount":0,"TradeDetail":[],"ResponseStatus":{"ErrorCode":"OK","Errors":[]},"TradeID":"2016063000000720"} ErrorResponse: RequestDuration:2.7148762 服务器端的 log 我感觉好像是我代码错了, 但是找不到哪里错了。。 还是怎么回事?
qq_28803955 2016-06-30
  • 打赏
  • 举报
回复
引用 3 楼 autfish 的回复:
这就绝对是服务器端的问题了,没有正常输出或者是你调用的接口不对,要协作解决了
是我的问题吗? 是不是我代码写错了?
大雨将至 2016-06-30
  • 打赏
  • 举报
回复
这就绝对是服务器端的问题了,没有正常输出或者是你调用的接口不对,要协作解决了
qq_28803955 2016-06-30
  • 打赏
  • 举报
回复
引用 1 楼 autfish 的回复:
这还得看服务端是否支持 不过这也没什么影响吧,你收到文本格式的内容后,再序列化回json对象就行了
<!doctype html><html lang="en-us"><head><title>CustomerAccBookQuery Snapshot of 2016-6-30 2:42:55</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><style type="text/css">BODY, H1, H2, H3, H4, H5, H6, DL, DT, DD { margin: 0; padding: 0; color: #444; font: 13px/15px Arial, Verdana, Helvetica;}H1 { text-align: center; font: 24px Helvetica, Verdana, Arial; padding: 20px 0 10px 0; background: #FBFBFB; border-bottom: solid 1px #fff;}#lnks { border-top: solid 1px #dfdfdf; border-bottom: solid 1px #dfdfdf; margin: 0 0 10px 0; padding: 5px; background: #f1f1f1; line-height: 20px; text-align: center;}#lnks B { padding: 0 3px;}#body { padding: 20px;}H1 B { font-weight: normal; color: #069;}H1 A { color: #0E8F13; text-decoration: underline;}H1 I { font-style: normal; color: #0E8F13;}A { color: #00C; text-decoration: none;}A:hover { text-decoration: underline;}.ib { position: relative; display: -moz-inline-box; display: inline-block;}* html .ib { display: inline;}*:first-child + html .ib { display: inline;}TABLE { border-collapse:collapse; border: solid 1px #ccc; clear: left;}TH { text-align: left; padding: 4px 8px; text-shadow: #fff 1px 1px -1px; background: #f1f1f1; white-space:nowrap; cursor:pointer; font-weight: bold;}TH, TD, TD DT, TD DD { font-size: 13px; font-family: Arial;}TD { padding: 8px 8px 0 8px; vertical-align: top;}DL { clear: left;}DT { margin: 10px 0 5px 0; font: bold 18px Helvetica, Verdana, Arial; min-width: 200px; overflow: hidden; clear: left; float: left; display:block; white-space:nowrap;}DD { margin: 5px 10px; font: 18px Arial; padding: 2px; display: block; float: left;}DL DL DT { font: bold 16px Arial;}DL DL DD { font: 16px Arial;}HR { display:none;}TD DL HR{ display:block; padding: 0; clear: left; border: none;}TD DL{ padding: 4px; margin: 0; height:100%; max-width: 700px;}DL TD DL DT { padding: 2px; margin: 0 10px 0 0; font-weight: bold; font-size: 13px; width: 120px; overflow: hidden; clear: left; float: left; display:block;}DL TD DL DD { margin: 0; padding: 2px; font-size: 13px; display: block; float: left;}TBODY>TR:last-child>TD { padding: 8px;}THEAD{ -webkit-user-select:none; -moz-user-select:none;}.desc, .asc { background-color: #FAFAD2;}.desc { background-color: #D4EDC9;}TH B { display:block; float:right; margin: 0 0 0 5px; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #ccc; border-bottom: none;}.asc B { border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #333; border-bottom: none;}.desc B { border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 5px solid #333; border-top: none;}#show-json { display:none;}#mask { display: none; position:absolute; top:0; left:0; height:100%; width:100%; background: rgba(0,0,0,0.7); z-index: 1;}.show-json #show-json, .show-json #mask { display:block;}#show-json { position: absolute; left: 50%; margin: 0 0 0 -350px; border: solid 4px #ccc; padding: 10px 20px; background: #fff; text-align: center; float: left; z-index: 2;}H3 { font-size: 18px; margin: 0 0 10px 0;}#show-json TEXTAREA { width: 750px; height: 400px; overflow:visible; display: block;}#show-json BUTTON { margin: 10px 0 0 0; padding: 5px 10px; clear: left;}</style></head><body><div id="mask"></div><h1>Snapshot of <i>CustomerAccBookQuery</i> generated by <a href="https://servicestack.net">ServiceStack</a> on <b>2016-6-30 2:42:55</b></h1><div id="lnks"> <a href="javascript:showJson()">view json datasource</a> <b>from original url:</b> <a href="http://10.0.4.107:5500/v1/account/AccBookQuery?">http://10.0.4.107:5500/v1/account/AccBookQuery?</a> <b>in other formats:</b> <a href="http://10.0.4.107:5500/v1/account/AccBookQuery?format=json">json</a> <a href="http://10.0.4.107:5500/v1/account/AccBookQuery?format=xml">xml</a> <a href="http://10.0.4.107:5500/v1/account/AccBookQuery?format=csv">csv</a> <a href="http://10.0.4.107:5500/v1/account/AccBookQuery?format=jsv">jsv</a></div><div id="body"> <div id="show-json"> <h3>This reports json data source</h3> <textarea></textarea> <button onclick="doc.body.className=null;">Close Window</button> </div> <div id="content"></div></div><script> !window.JSON && document.write(unescape('%3Cscript src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"%3E%3C/script%3E'))</script><script type="text/javascript">// <![CDATA[var doc = document, win = window, $ = function(id) { return doc.getElementById(id); }, $$ = function(sel) { return doc.getElementsByTagName(sel); }, $each = function(fn) { for (var i=0,len=this.length; i<len; i++) fn(i, this[i], this); };$.each = function(arr, fn) { $each.call(arr, fn); };var splitCase = function (t) { return typeof t != 'string' ? t : titleCase(t.replace(/([a-z0-9])([A-Z])/g, '$1 $2')); }, titleCase = function (s) { return s.replace(/\w\S*/g, function (t) { return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase(); }); }, uniqueKeys = function(m){ var h={}; for (var i=0,len=m.length; i<len; i++) for (var k in m[i]) if (show(k)) h[k] = k; return h; }, keys = function(o){ var a=[]; for (var k in o) if (show(k)) a.push(k); return a; }var tbls = [];function val(m) { if (m == null) return ''; if (typeof m == 'number') return num(m); if (typeof m == 'string') return str(m); if (typeof m == 'boolean') return m ? 'true' : 'false'; return m.length ? arr(m) : obj(m);}function num(m) { return m; }var sdfmt = location.hash.indexOf('show=') >=0 && location.hash.indexOf('fulldates') >= 0 ? dmft : dmfthm;function str(m){ return m.substr(0,6) == '/Date(' ? sdfmt(date(m)) : m; }function sfmt(s) { return humanize ? splitCase(s) : s; }function date(s) { return new Date(parseFloat(/Date\(([^)]+)\)/.exec(s)[1])); }function pad(d) { return d < 10 ? '0'+d : d; }function dmft(d) { return d.getFullYear() + '/' + pad(d.getMonth() + 1) + '/' + pad(d.getDate()); }function dmfthm(d) { return d.getFullYear() + '/' + pad(d.getMonth() + 1) + '/' + pad(d.getDate()) + ' ' + pad(d.getHours()) + ":" + pad(d.getMinutes()); }function show(k) { return typeof k != 'string' || k.substr(0,2) != '__'; }function obj(m) { var sb = '<dl>'; for (var k in m) if (show(k)) sb += '<dt class="ib">' + sfmt(k) + '</dt><dd>' + val(m[k]) + '</dd>'; sb += '</dl>'; return sb;}function arr(m) { if (typeof m[0] == 'string' || typeof m[0] == 'number') return m.join(', '); var id=tbls.length, h=uniqueKeys(m); var sb = '<table id="tbl-' + id + '"><caption></caption><thead><tr>'; tbls.push(m); var i=0; for (var k in h) sb += '<th id="h-' + id + '-' + (i++) + '"><b></b>' + sfmt(k) + '</th>'; sb += '</tr></thead><tbody>' + makeRows(h,m) + '</tbody></table>'; return sb;}function makeRows(h,m) { var sb = ''; for (var r=0,len=m.length; r<len; r++) { sb += '<tr>'; var row = m[r]; for (var k in h) if (show(k)) sb += '<td>' + val(row[k]) + '</td>'; sb += '</tr>'; } return sb;}var model = {"CardNo":"7150020160010634","TradeCount":0,"TradeDetail":[],"ResponseStatus":{"ErrorCode":"OK","Errors":[]},"TradeID":"2016063000000702"}, txt = $$('TEXTAREA')[0], humanize = true && location.hash.indexOf('dehumanize') == -1, isIE = /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);$("content").innerHTML = val(model); txt.innerHTML=JSON.stringify(model);function showJson(){ doc.body.className='show-json'; txt.select(); txt.focus(); }doc.onclick = function(e) { e = e || window.event, el = e.target || e.srcElement, cls = el.className; if (el.tagName == 'B') el = el.parentNode; if (el.tagName != 'TH') return; el.className = cls == 'asc' ? 'desc' : (cls == 'desc' ? null : 'asc'); $.each($$('TH'), function(i,th){ if (th == el) return; th.className = null; }); clearSel(); var ids=el.id.split('-'), tId=ids[1], cId=ids[2]; if (!tbls[tId]) return; var tbl=tbls[tId].slice(0), h=uniqueKeys(tbl), col=keys(h)[cId], tbody=el.parentNode.parentNode.nextSibling; if (!el.className){ setTableBody(tbody, makeRows(h,tbls[tId])); return; } var d=el.className=='asc'?1:-1; tbl.sort(function(a,b){ return cmp(a[col],b[col]) * d; }); setTableBody(tbody, makeRows(h,tbl));}function setTableBody(tbody, html) { if (!isIE) { tbody.innerHTML = html; return; } var temp = tbody.ownerDocument.createElement('div'); temp.innerHTML = '<table>' + html + '</table>'; tbody.parentNode.replaceChild(temp.firstChild.firstChild, tbody);}function clearSel() { if (doc.selection && doc.selection.empty) doc.selection.empty(); else if(win.getSelection) { var sel=win.getSelection(); if (sel && sel.removeAllRanges) sel.removeAllRanges(); }}function cmp(v1, v2){ var f1, f2, f1=parseFloat(v1), f2=parseFloat(v2); if (!isNaN(f1) && !isNaN(f2)) v1=f1, v2=f2; if (typeof v1 == 'string' && v1.substr(0,6) == '/Date(') v1=date(v1), v2=date(v2); if (v1 == v2) return 0; return v1 > v2 ? 1 : -1;}// ]]></script></body></html> 大概冒出这些玩意。。。 完全看不懂 请问这些可以序列化json对象吗?
大雨将至 2016-06-30
  • 打赏
  • 举报
回复
这还得看服务端是否支持 不过这也没什么影响吧,你收到文本格式的内容后,再序列化回json对象就行了
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与ADTplug-in 2.2 建立第一个Android项目(HelloAndroid!) 2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色——引用Drawable颜色常数及背景色 3.4 置换TextView文字——CharSequence数据类型与ResourceID应用 3.5 取得手机屏幕大小——DisplayMetrics取得画面宽高的方法 3.6 样式化的定型对象——Style样式的定义 3.7 简易的按钮事件——Button事件处理 3.8 手机页面的转换——setContentView的应用 3.9 调用另一个Activity——Intent对象的使用 3.10 不同Activity之间的数据传递——Bundle对象的实现 3.11 返回数据到前一个Activity——startActivityForResult方法 3.12 具有交互功能的对话框——AlertDialog窗口 3.13 置换文字颜色的机关——Button与TextView的交互 3.14 控制不同的文字字体——Typeface对象使用 3.15 如iPhone拖动相片特效——Gallery画廊 3.16 自制计算器——多按钮的整合应用 3.17 关于(About)程序信息——Menu功能菜单程序设计 3.18 程序加载中,请稍后——ProgressDialog与线程整合应用 3.19 全屏幕以按钮覆盖——动态产生按钮并最大化 3.20 今晚到哪儿打牙祭?——具选择功能的对话框 3.21 Android变脸——主题(Theme)实现 第4章 史上超豪华的手机控件 4.1 EditTextTextView共舞——setOnKeyListener事件 4.2 设计具有背景图的按钮——ImageButton的焦点及事件处理 4.3 给耶诞老人的信息——Toast对象的使用 4.4 我同意条款——CheckBox的isChecked属性 4.5 消费券采购列表——多选项CheckBox的应用 4.6 向左或向右——RadioGroup组与onCheckedChanged事件 4.7 专业相框设计——ImageView的堆栈应用 4.8 自定义下拉菜单模式——Spinner与setDropDownViewResource 4.9 动态添加/删除的Spinner菜单——ArrayList与Widget的依赖性 4.10 心爱小宝贝相片集——Gallery与衍生BaseAdapter容器 4.11 快速的搜索手机文件引擎——JavaI/O的应用 4.12 按钮也能随点击变换——ImageButton选择特效 4.13 具自动提示功能的菜单——AutoCompleteTextView与数组 4.14 数字及模拟小时钟设计——AnalogClock与DigitalClock的原理 4.15 动态输入日期与时间——DatePicker与TimePicker应用 4.16 猜猜红心A在那儿——ImageView点击事件与透明度处理 4.17 后台程序运行进度提示——ProgressBar与Handler的整合应用 4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与ListActivity的结合.. 4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在什么——RadioButtonID 4.26 离开与关闭程序的弹出窗口——对话窗口上的ICON图标 第5章 交互式通信服务与手机控制 5.1 具有正则表达式的TextView——Linkify规则 5.2 ACTION!CALL!拨打电话——Intent
主要特性Java 语言是简单的:Java 语言的语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,而是引用。并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧。Java 语言是面向对象的:Java 语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为 implements)。Java 语言全面支持动态绑定,而 C++语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。Java语言是分布式的:Java 语言支持 Internet 应用的开发,在基本的 Java 应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括 URL、URLConnection、Socket、ServerSocket 等。Java 的 RMI(远程方法激活)机制也是开发分布式应用的重要手段。Java 语言是健壮的:Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证。对指针的丢弃是 Java 的明智选择。Java 的安全检查机制使得 Java 更具健壮性。Java语言是安全的:Java通常被用在网络环境中,为此,Java 提供了一个安全机制以防恶意代码的攻击。除了Java 语言具有的许多安全特性以外,Java 对通过网络下载的类具有一个安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类 SecurityManager)让 Java 应用设置安全哨兵。Java 语言是体系结构中立的:Java 程序(后缀为 java 的文件)在 Java 平台上被编译为体系结构中立的字节码格式(后缀为 class 的文件),然后可以在实现这个 Java 平台的任何系统中运行。这种途径适合于异构的网络环境和软件的分发。Java 语言是可移植的:这种可移植性来源于体系结构中立性,另外,Java 还严格规定了各个基本数据类型的长度。Java 系统本身也具有很强的可移植性,Java 编译器是用 Java 实现的,Java 的运行环境是用 ANSI C 实现的。Java 语言是解释型的:如前所述,Java 程序在 Java 平台上被编译为字节码格式,然后可以在实现这个 Java 平台的任何系统中运行。在运行时,Java 平台中的 Java 解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。Java 是高性能的:与那些解释型的高级脚本语言相比,Java 的确是高性能的。事实上,Java 的运行速度随着 JIT(Just-In-Time)编译器技术的发展越来越接近于 C++。Java 语言是多线程的:在 Java 语言中,线程是一种特殊的对象,它必须由 Thread 类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为 Thread(Runnable) 的构造子类将一个实现了 Runnable 接口的对象包装成一个线程,其二,从 Thread 类派生出子类并重写 run 方法,使用该子类创建的对象即为线程。值得注意的是 Thread 类已经实现了 Runnable 接口,因此,任何一个线程均有它的 run 方法,而 run 方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java 语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为 synchronized)。Java 语言是动态的:Java 语言的设计目标之一是适应于动态变化的环境。Java 程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。这也有利于软件的升级。另外,Java 中的类有一个运行时刻的表示,能进行运行时刻的类型检查。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧