Java服务端获取360token时候报错:Server returned HTTP response code: 400 for URL

问题描述

报错内容:Exceptioninthread"main"java.io.IOException:ServerreturnedHTTPresponsecode:400forURL:https://openapi.360.cn/oauth2/access_tokenatsun.net.www.protocol.http.HttpURLConnection.getInputStream(UnknownSource)atsun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(UnknownSource)atcom.centurymedia.summer.test.TrustSSL.readContentFromPost(TrustSSL.java:77)atcom.centurymedia.summer.test.TestAndroidQihooAccessToken.main(TestAndroidQihooAccessToken.java:45)源代码:publicclassTestAndroidQihooAccessToken{publicstaticvoidmain(String[]args)throwsIOException{//测试用例Stringurl="https://openapi.360.cn/oauth2/access_token";Stringparm="";TrustSSL.readContentFromPost(url,parm);}}publicstaticvoidreadContentFromPost(Stringurl,Stringparam)throwsIOException{//Post请求的url,与get不同的是不需要带参数//设置SSLContexttry{SSLContextsc=SSLContext.getInstance("SSL");sc.init(null,newTrustManager[]{newTrustAnyTrustManager()},newjava.security.SecureRandom());//打开连接URLconsole=newURL(url);HttpsURLConnectionconnection=(HttpsURLConnection)console.openConnection();connection.setSSLSocketFactory(sc.getSocketFactory());//设置是否向connection输出,因为这个是post请求,参数要放在//http正文内,因此需要设为trueconnection.setDoOutput(true);connection.setDoInput(true);connection.setRequestMethod("POST");//Post请求不能使用缓存connection.setUseCaches(false);//URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。//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();DataOutputStreamout=newDataOutputStream(connection.getOutputStream());//对含有空格的参数进行处理//正文,正文内容其实跟get的URL中'?'后的参数字符串一致out.writeBytes(param);out.flush();out.close();//flushandcloseBufferedReaderreader=newBufferedReader(newInputStreamReader(connection.getInputStream(),"ISO88591-1"));//设置编码,否则中文乱码Stringline="";while((line=reader.readLine())!=null){System.out.println(line);}reader.close();connection.disconnect();}catch(NoSuchAlgorithmExceptione){e.printStackTrace();}catch(KeyManagementExceptione){e.printStackTrace();}}求大神解。。。。

解决方案

解决方案二:
400请求出错由于语法格式有误服务器无法理解此请求这是http的定义,360的开放平台的文档里肯定有描述400是什么意思,八成是你传的参数有问题,你仔细看过360的文档之后再说
解决方案三:

解决方案四:
引用2楼rui888的回复:根据OAuth2的协议,这个url要传的参数应该是:post:code=${code}&grant_type=authorization_code&redirect_uri=${redirect_uri}&client_id=${client_id}&client_secret=${client_secret}
解决方案五:
1楼大神说的对我刚联系上360技术了好像确实是传参问题我正在核对
解决方案六:
你看看你个参数问题
解决方案七:
这问题解决了么?
解决方案八:
我也遇到了,怎么解决这个问题的

时间: 2024-09-29 23:19:18

Java服务端获取360token时候报错:Server returned HTTP response code: 400 for URL的相关文章

请教Java 网络编程 Server returned HTTP response code: 400

问题描述 下面是简单的代码:URL url = new URL(uri);URLConnection rulConnection = url.openConnection();HttpURLConnection httpUrlConnection = (HttpURLConnection) rulConnection; httpUrlConnection.setDoInput(true); httpUrlConnection.setUseCaches(false); httpUrlConnect

java.io.IOException: Server returned HTTP response code: 505 for URL

问题描述 碰到个很奇怪的问题:代码如下:URL url = new URL(urlStr);URLConnection hpCon = url.openConnection();InputStream in = hpCon.getInputStream(); 然后我发送的一个URL是 : http://localhost:8000/account/accountTo.query?param=SR4A V12f报错:java.io.IOException: Server returned HTTP

kettle连接hive2,连接正常,但是获取表信息报错

问题描述 kettle连接hive2,连接正常,但是获取表信息报错 java.lang.reflect.InvocationTargetException: Problem encountered getting information from the database: org.pentaho.di.core.exception.KettleDatabaseException: Unable to retrieve database information because of an err

.Net网络编程——服务端获取客户端连接

一,客户端服务端连接图示          其中,在客户端和服务端的socket中,都报存这连接的信息:客户端通过connect连接,服务端可以调用AcceptTcpClient来获取链接到服务端的客户端,每一个客户端和服务端的连接都对应这唯一一个Socket. 二,服务端获取连接示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; us

java服务端如何实现对安卓和苹果客户端发来的不同数据格式进行处理和判断?

问题描述 java服务端如何实现对安卓和苹果客户端发来的不同数据格式进行处理和判断? 服务端是java写的,安卓客户端与服务端通信是用java的对象流,直接传对象进行socket通信,但是苹果的客户端不能采用这种方式,现苹果客户端打算用json 格式的字符串与服务端进行socket通信,请问大神们,我该如何对客户端传来的socket流进行判断,到底是安卓发来的还是苹果发来的呢?谢谢! 解决方案 都使用json,不同的客户端用一个字段表示,服务器判断下 解决方案二: 加上信息头,里面包括设备类型,

文件传输-java使用SSH方式上传报错:Algorithm negotiation fail

问题描述 java使用SSH方式上传报错:Algorithm negotiation fail java用jsch实现文件传输(SSH形式),但是好像本地和服务器加密方式不一致,一直报错: com.jcraft.jsch.JSchException: Algorithm negotiation fail 解决方案 如果是已form表单中的上传.需要改form的属性enctype( 属性规定在发送到服务器之前应该如何对表单数据进行编码.) 改属性默认值:application/x-www-form

Java服务端压缩GZIP IOS解压问题

问题描述 Java服务端压缩GZIP IOS解压问题 在Java端用什么方法加压GZIP 在IOS端能解压出来 IOS用libz库方式解压的 求大神解答..找了很多种压缩方式都不行 IOS一直解压不出来 解决方案 iOS与Java服务器GZip压缩问题iOS与Java服务器GZip压缩问题iOS与Java服务器GZip压缩问题 解决方案二: 一般都是用标准的gzip压缩格式 各种平台都是一样的 你要看看java是否压缩正确了 用其它工具能否解压成功

axis1 调用axis2 的服务上传pdf文件.报错

问题描述 axis1 调用axis2 的服务上传pdf文件.报错 axis1 调用axis2 的服务上传pdf文件.报错org.apache.axis2.AxisFault:invalid reference:cid:******的错误 解决方案 Axis2数据绑定报错 解决方案二: http://download.csdn.net/detail/dongf800/5187102

关于java服务端新用户注册问题

问题描述 关于java服务端新用户注册问题 怎么在java服务端判断新注册用户账号是否可用!求代码,本人刚入行 是菜鸟啊 这个方法里面改怎么写啊, @Override public boolean IsExistAccount(String username, short accountType) throws TException { // TODO Auto-generated method stub return false; } 解决方案 首先要判断username是否符合你的规定,有没