看了openstack没几天,然后就开始试着用Java调用所有的API,第一步得到Credentials的时候成功了,然后第二步,传参数使所有的server信息都列出来的时候报错404.具体描述如下(曾经发到论坛求助):

最近搭建好openstack环境,测试API的时候出错,是404错误,涉及到的代码如下:

  1. public static Map<String, Object> get(URL url, String token) throws IOException {
  2. HttpURLConnection conn = getURLConnection(url);
  3. //        conn.setRequestProperty("Content-Type", APPLICATION_JSON);
  4. conn.setRequestMethod(HTTP_GET);
  5. conn.setDoInput(true);
  6. //        conn.setDoOutput(true);
  7. if (token != null) {
  8. System.out.println(token);
  9. conn.setRequestProperty("X-Auth-Token", token);
  10. }
  11. System.out.println(conn.toString());
  12. if (conn.getResponseCode() == 401) {
  13. throw new IOException("Authorize Error occurs and the response code is :" + conn.getResponseCode() + ",and the message is:" + conn.getResponseMessage());
  14. }
  15. System.out.println(conn.getResponseCode());
  16. ObjectMapper mapper = new ObjectMapper();
  17. mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  18. //        System.out.println(mapper.readValue(conn.getInputStream(), new TypeReference<Map<String, Object>>() {}));
  19. return mapper.readValue(conn.getInputStream(), new TypeReference<Map<String, Object>>() {
  20. });
  21. }
  22. /**
  23. * Creates the HTTP URL connection
  24. *
  25. * @param url
  26. *            the URL to be used to establish HTTP connection
  27. * @return A HttpURLConnection
  28. */
  29. private static HttpURLConnection getURLConnection(URL url) throws IOException {
  30. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  31. // disable cache
  32. conn.setUseCaches(false);
  33. // turn off HTTP keep-alive
  34. conn.setRequestProperty("Connection", "close");
  35. return conn;
  36. }

上面的参数URL 是:http://127.0.0.1:5000/v2/2835ba0b17384840941b5c5d653fb81a/servers/detail
  报错如下:

  1. Java code
  2. Exception in thread "main" java.io.FileNotFoundException: http://127.0.0.1:5000/v2/2835ba0b17384840941b5c5d653fb81a/servers/detail
  3. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  4. at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
  5. at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  6. at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
  7. at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1664)
  8. at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1662)
  9. at java.security.AccessController.doPrivileged(Native Method)
  10. at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1660)
  11. at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1243)
  12. at com.intel.cpa.openstack.HttpUtil.get(HttpUtil.java:148)
  13. at com.intel.cpa.openstack.NovaAPI.listServers(NovaAPI.java:46)
  14. at com.intel.cpa.openstack.NovaAPI.main(NovaAPI.java:37)
  15. Caused by: java.io.FileNotFoundException: http://127.0.0.1:5000/v2/2835ba0b17384840941b5c5d653fb81a/servers/detail
  16. at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1613)
  17. at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468)
  18. at com.intel.cpa.openstack.HttpUtil.get(HttpUtil.java:137)
  19. ... 2 more

请问,这个是什么问题?有没有什么好的建议?
    
  最终要的是发现404问题后思路应该什么样子的?
  譬如这个,首先应该考虑构建的URL是否正确,然后这里还有一个要求是把一个值作为header传进去,也做了,请大家帮忙分析一下。
  感谢您花时间思考!

多谢大家,已经解决了,确实是URL问题,主要原因是第一次请求后,第二次发送请求应该交由nova模块处理,所以应该换掉端口。

主要问题在呢?第一次得到Credentials的时候,是去keystone,返回得到token,tenant等后,发送第二个请求,是应该去nova compute模块,所以,应该从第一次的返回值里面得到url,然后再发送请求。

所以,还是要去了解openstack这个东西的整体架构

遇到404错误后,只是一遍一遍的看,没什么用,现在想想,要是分解开始去看应该会很快的找到原因了:

            1:http还是https

            2:主机地址对不对?

            3:端口对不对?(有时候调用不同的模块可能就会换新的端口)

            4:端口后面的内容

 

OpenStack学习系列-----第二篇 由一个错误看理解整个架构的重要性的更多相关文章

  1. JavaWeb学习总结第二篇--第一个JavaWeb程序

    JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...

  2. OpenStack学习系列-----第一篇 OpenStack介绍

    刚开始接触OpenStack,被它所承诺的前景,以及现在业界对它的期望吸引(OpenStack被誉为21世纪的Linux开源社区,可以预见其的发展前景是何其广阔.).怎么说呢,我现在也暂时相信,Ope ...

  3. vue.js学习系列-第二篇

    一 VUE实例生命周期钩子     1 生命周期函数         定义 生命周期函数就是vue在某一时间点自动执行的函数 2 具体函数      1 new vue()      2 before ...

  4. 学习KnockOut第二篇之Counter

                                                                        学习KnockOut第二篇之Counter        欲看此 ...

  5. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  6. Caffe学习系列——工具篇:神经网络模型结构可视化

    Caffe学习系列——工具篇:神经网络模型结构可视化 在Caffe中,目前有两种可视化prototxt格式网络结构的方法: 使用Netscope在线可视化 使用Caffe提供的draw_net.py ...

  7. 前端工程师技能之photoshop巧用系列第二篇——测量篇

    × 目录 [1]测量信息 [2]实战 [3]注意事项 前面的话 前端工程师使用photoshop进行的大量工作实际上是测量.本文是photoshop巧用系列第二篇——测量篇 测量信息 在网页制作中需要 ...

  8. 深入理解javascript作用域系列第二篇——词法作用域和动态作用域

    × 目录 [1]词法 [2]动态 前面的话 大多数时候,我们对作用域产生混乱的主要原因是分不清楚应该按照函数位置的嵌套顺序,还是按照函数的调用顺序进行变量查找.再加上this机制的干扰,使得变量查找极 ...

  9. RabbitMQ学习总结 第二篇:快速入门HelloWorld

    目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...

随机推荐

  1. Python实现Apriori

    Python实现Apriori 运行环境 Pyhton3 计算过程 st=>start: 开始 e=>end: 结束 op1=>operation: 读入数据 op2=>ope ...

  2. ThinkPHP技巧

    在php文件可以用    echo D_S()->getLastSql();来打印出  当前的sql语句

  3. 撸一撸腾讯的微信支付(C#)

    一.前言 以往网上支付都是支付宝的天下,随着微信用户群的日益增多(其实,到现在我也不理解微信为嘛那么火,功能还没QQ强大,或许是公众号的原因?),先如今不上个微信支付你都不好意思说你系统支持在线支付. ...

  4. Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1

    Incorrect string value: '\xF0\xA1\xA1\x92' for column 'herst' at row 1[转] 1.一般来说MySQL(小于5.5.3)字符集设置为 ...

  5. oracle数据库登录连接很慢;kettle连接oracle 报 IO 错误,socket time out 问题解决记录

    问题描述: 1:oracle数据库连接登陆时突然变得很慢:sqldeveloper链接数据库很慢: 2:Kettle-spoon etl程序访问数据库,任务执行时报 :数据库连接 IO错误 :Sock ...

  6. 我是IT小小鸟

    我是IT小小鸟读后感 世界上没有一蹴而就的成功者,只有头悬梁锥刺股的奋斗者.蜉蝣向往大鹏的辉煌,却不曾知大鹏以往的汗水.蜉蝣之所以为蜉蝣,是因为它犹如井底之蛙,目光短浅,之盲目地羡慕成功者,而大鹏之所 ...

  7. 【转载】Android异步处理系列文章

    本博文地址:http://blog.csdn.net/mylzc/article/details/6777767 转载请注明出处. 为了给用户带来良好的交互体验,在Android应用的开发过程中需要把 ...

  8. 【python】文件的输入和输出

    1.os模块 2.os.path 模块 3.实例 1. os模块 对文件系统的访问大多通过python的os模块实现,其中os 模块负责大部分的文件系统操作,包括删除/重命名文件,遍历目录树,管理文件 ...

  9. Spring Mail

    想必大家在今天这个特殊的日子里,一定热血沸腾了一把.为上午的阅兵点70个赞! 进入Spring Mail的主题: 前后大概花了8个小时的时间来研究Spring封装的javaMail.本来觉得挺简单的应 ...

  10. 【bzoj1011】[HNOI2008]遥远的行星

    1011: [HNOI2008]遥远的行星 Time Limit: 10 Sec  Memory Limit: 162 MBSec  Special JudgeSubmit: 3711  Solved ...