HTTP500内部服务器错误
分类:Http
问题描述使用http方式请求对方服务器,返回JSON格式数据由于是测试环境,网段不是同一个,对方服务器网段做了代理,我们能ping通,也能telnet使用浏览器访问能正常返回JSON格式数据用代码解析http请求一直报500错误,对方觉得是我们代码问题,但是我们用代码解析公网上的一些请求是正常的;而且我们将代码发给对方,让对方解析,也是正常的问题解决由于我们本地看不出什么问题,我们用代码请求,让对方服务器进行抓包调试。对方服务器让我们将请求的Content-Type改为application/json,请求仍然有问题Error-Reason:CHARACTER:error='json';error_description*=UTF-8''Expectedoneof:<<{,[>>butgot:<>对方查了下,发现服务器Content-Type填什么都报错,application/x-www-form-urlencoded、application/json都报错,只有不填才能正确,空串也不行;我们就说http请求头有个默认值就是x-www-form-urlencoded,对方服务器端改了这个Content-Type的请求头,我们代码就能正常访问到JSON数据了HTTP请求代码publicstaticStringsendGet(Stringurl,Stringpara{Stringresult='';BufferedReaderin=null;try{StringurlName=url+'?'+param;URLrealUrl=newURL(urlNam;//打开和URL之间的连接URLConnectionconn=realUropenConnection();//设置通用的请求属性consetRequestProperty('accept','*/*');consetRequestProperty('connection','Keep-Alive');consetRequestProperty('user-agent','Mozilla/0(compatible;MSIE0;WindowsNT1;SV');//建立实际的连接conconnect();//获取所有响应头字段Map>map=congetHeaderFields();//遍历所有的响应头字段for(Stringkey:map.keySet()){Systeout.println(key+'--->'+map.get(key));}//定义BufferedReader输入流来读取URL的响应in=newBufferedReader(newInputStreamReader(congetInputStream(),'UTF-8'));Stringline;while((line=ireadLine())!=nul{result+=line;}}catch(Exception{Systeout.println('发送GET请求出现异常!'+;printStackTrace();}//使用finally块来关闭输入流finally{try{if(in!=nul{iclose();}}catch(IOExceptionex){ex.printStackTrace();}}returnresult;}
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点