问题描述
报错内容: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技术了好像确实是传参问题我正在核对
解决方案六:
你看看你个参数问题
解决方案七:
这问题解决了么?
解决方案八:
我也遇到了,怎么解决这个问题的