2016-11-24 92 views
0

我正在尝试阅读JSON后,我与urllib2发送url请求。readingJSON with simplejson python

我的代码:

request = urllib2.Request("https://127.0.0.1:443/myAPI", data=form_data, headers=headers) 
response = urllib2.open(request) 

所以,问题是当我试图从响应对象读取JSON。 我做它这样

simplejson.loads(response.read()) 

我得到的错误是:当我送我的Firefox浏览器的请求

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/opt/new/main3/python/simplejson/__init__.py", line 385, in loads 
    return _default_decoder.decode(s) 
    File "/opt/new/main3/python/simplejson/decoder.py", line 402, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/opt/new/main3/python/simplejson/decoder.py", line 420, in raw_decode 
    raise JSONDecodeError("No JSON object could be decoded", s, idx) 
simplejson.decoder.JSONDecodeError: No JSON object could be decoded: line 1 column 0 (char 0) 

有趣的部分是,我打字地址127.0.0.1/myAPI在url线,我得到了屏幕上的json,我可以在调试模式下看到它作为JSON {“hosts”:[{“host”:“127.0.0.1: 4448“}]}

所以JSON是有效的..

在调试我得到这个页面:

<!DOCTYPE html> 
<html> 
<head> 
    <!-- framebusting --> 
    <style> 
     html{display : none ;} 
    </style> 
    <script type="text/javascript"> 
     if (self == top) { 
      document.documentElement.style.display = "block"; 
     } else { 
      top.location = self.location; 
     } 
    </script> 
    <script type="text/javascript" src="js/detectBrowser.js"></script> 
    <meta charset="utf-8"/> 
    <link rel="StyleSheet" href="css/forensics.css" type="text/css" media="screen"/> 
</head> 
<body> 
    <script type="text/javascript" src="libs/requirejs/require.js" data-main="js/login.js"></script> 
</body> 
</html> 

是任何一个有一些方法来解决这个问题,或者我怎么能直接从读取JSON文本在响应对象,甚至看,在调试

我很欣赏蚂蚁的帮助,我试图为至少3天来弄明白 感谢

+0

尝试打印什么是响应,以检查它是否与浏览器通过执行print response.read()并在此处发布结果。也有可能返回的字符串有一些不可见的控制字符,您的浏览器不显示但使simplejson失败。 <!DOCTYPE HTML> – Antoine

+0

<! - framebusting - > <脚本类型= “文本/ JavaScript的”> 如果(个体==顶部) document.documentElement.style.display =“block”; } else { top.location = self.location; } – yntnm

+0

<脚本类型= “文本/ JavaScript的” SRC = “JS/detectBrowser.js”> <元的charset = “utf-8”/> <链路的rel = “样式表的” href =“CSS/forensics.css“type =”text/css“media =”screen“/> yntnm

回答

0

所以这是我的坏和API是需要一个coockie。 添加cookie头后我收到一个正确的JSON

0

我想这是因为这个simplejson.loads(response .read())的。你有

响应和.read()之间的空间尝试以下操作:

request = urllib2.Request("https://127.0.0.1:443/myAPI", data=form_data, headers=headers) 
response = urllib2.open(request) 
response_body = response.read() 
response_body_json = simplejson.loads(response_body) 
+0

no ...在我没有的真实代码中,我在这里修复它也 – yntnm