昨天调用还OK,今天一大早过来就调用不了
抛出SSL异常,Connection reset by peer
急求问题所在
private void getWeiboResult(String url) { HttpClient httpClient = getNewHttpClient(); HttpGet httpGet = new HttpGet(url); // HttpPost httpPost=new HttpPost(url); InputStream inputStream = null; HttpResponse response; HttpEntity entity; try { response = httpClient.execute(httpGet); entity = response.getEntity(); inputStream = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String result = ""; String line = ""; while ((line = reader.readLine()) != null) { result = result + line; } System.out.println(result); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } } public static HttpClient getNewHttpClient() { try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null); SSLSocketFactory sf = new SSLSocketFactoryEx(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme("https", sf, 443)); ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); return new DefaultHttpClient(ccm, params); } catch (Exception e) { return new DefaultHttpClient(); } } SSLSocketFactoryEx.class: public class SSLSocketFactoryEx extends SSLSocketFactory { private SSLContext sslContext = SSLContext.getInstance("TLS"); public SSLSocketFactoryEx(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { super(truststore); TrustManager tm = new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws java.security.cert.CertificateException { } }; sslContext.init(null, new TrustManager[] { tm }, null); } @Override public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose); } @Override public Socket createSocket() throws IOException { return sslContext.getSocketFactory().createSocket(); } }
很有可能是新浪服务器的问题,新浪的服务一直都不太稳定,你可以换时间多试几次
不应该是新浪那边的问题
我在浏览器直接拷贝那个地址可以访问到数据
写个Demo 发个别人 同样一段代码 别人能拿到 我这里拿不到
我就挺奇怪的
而且同样一个APK 别人能拿到 我这里拿不到
我的app还未通过审核!!!
@暗殇: 调用太频繁也有可能产生这个错误的,另外新浪微博对调用频率有限制的。
@artwl: 我知道新浪微博用调用频率这个问题
但是未授权的应用 一个小时也可以访问50多次
何况我访问的频率根本不会那么高