急求救~我们公司使用了销售易crm的产品,crm开放API,最近因为做点分析,把数据取过来这边,前两周还好好的。这几天突然连接不了,我问了那边公司的人,他们开放接口给N多家公司,但是其他人没问题。
所报错误:
部分代码:
public static String getAccessToken() { //url 新浪和百度的可以连接返回数据,第三个str无法连接 //String str="http://hq.sinajs.cn/list=s_sz399001"; // String str="http://www.baidu.com"; //String str="https://api.xiaoshouyi.com/authorize/token"; try { URL url=new URL(str); HttpURLConnection con=(HttpURLConnection) url.openConnection(); con.setDoOutput(true);// 使用 URL 连接进行输出 con.setDoInput(true);// 使用 URL con.setUseCaches(false);// 忽略缓存 con.setRequestMethod("POST");// 设置URL请求方法 //设置属性 con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //application/octet-stream con.setRequestProperty("Charset", "utf-8"); con.connect(); //此处报错,下面的没有运行。 DataOutputStream out =new DataOutputStream(con.getOutputStream()); out.writeBytes("app_key=7QCqk2WPLkQ=&username=qwj@pci-suntektech.com&password=pci@suntek1601053gYYhv6f"); out.flush(); out.close(); InputStream in= con.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(in, "utf-8")); StringBuffer sb=new StringBuffer(); String l; while ((l = br.readLine()) != null) { sb.append(l); } System.out.println(sb.toString()); return sb.toString(); } catch(Exception e){ e.printStackTrace(); } return null; }
我已经尝试过的方法:
1、刚开始觉得是公司代理的原因,所以尝试不适用代理,或者换成另一个代理,均不行
2、觉得是销售易API的原因,我尝试连接了新浪和百度,能成功返回数据(也说明我网络畅通,只是单单连不了销售易API),于是联系对方开发人员,他们自己可以连接API,而且保守估计他们都实施几十几百家公司,其他公司都没问题,如果有问题早闹了,肯定马上解决的,不会一连几天,所以排除对方问题。
3、排除是验证出错,要连接上才开始验证APP_KEY,username,password等信息,现在根本连不上对方接口。
排除掉这些,只剩下错误信息,有点怀疑是系统问题,比如把对方网址加入黑名单了或者什么的,没找到如何解决。有谁能就这个报错信息教教我,感谢大神,感激涕零~~
把Stringstr="https://api.xiaoshouyi.com/authorize/token";
改成:
Stringstr="https://api.xiaoshouyi.com/";
你换个DNS ,换完后记得刷新下DNS缓存...当然要是你们公司内部还有一套DNS缓存那...你不要用公司的DNS
问题解决了,是JDK的问题,JDK6使用https连接时有这个问题,换成JDK7,成功连通了。
ps:觉得很不可思议,即使是JDK6,也支持https连接,但是不打算深究。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。