2016-11-24 10 views
0

urllib2でurlリクエストを送信した後にJSONを読み込もうとしています。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として表示されます {"ホスト": "127.0.0.1: 4448」}]}

いずれかがそれを解決するためにいくつかの方法を持っているされて

<!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テキストを読むことができます:デバッグ時10

ので、JSONが有効な..です

iは、このページを取得していますでも、応答オブジェクト、またはデバッグ

でいるを見て、私はアリの助けに感謝し、私は おかげ

+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/ yntnm

答えて

0

ので、それは私の悪かったとAPIがcoockieを必要としました:あなたは

は、以下のことを試してみてください)、応答と.read(間にスペースを

持っています。 クッキーヘッダーを追加した後正しいJSONを受信しました

0

をそれを把握するために少なくとも3日間しようとしている私はそれがために、このsimplejson.loads(response .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

...実際のコードでは私は持っていません。 – yntnm