【问题标题】:Get Ajax Json Output with Python Requests Library 500 error使用 Python 请求库 500 错误获取 Ajax Json 输出
【发布时间】:2015-02-26 12:28:58
【问题描述】:

我已完成此代码以获取http://www.yurticikargo.com/bilgi-servisleri/Sayfalar/en-yakin-sube.aspx 网页的输出 但我收到 500 错误。不明白为什么

import requests
import json


class Yurtici(object):
    baseUrl = 'http://www.yurticikargo.com/'
    ajaxRoot1 = '_layouts/ArikanliHolding.YurticiKargo.WebSite/ajaxproxy-sswservices.aspx/'
    ajaxRoot2 = '_layouts/ArikanliHolding.YurticiKargo.WebSite/ajaxproxy-unitservices.aspx/GetUnit'

    getTown = 'GetTownByCity'

    urlGetTown = baseUrl + ajaxRoot1 + getTown
    urlGetUnit = baseUrl + ajaxRoot2  
    headers = {'content-type': 'application/json','encoding':'utf-8'}

    def __init__(self):
        pass

    def ilceler(self, plaka=34): # Default testing value
        payload = {'cityId':plaka}
        url = self.urlGetTown
        r = requests.post(url, data=json.dumps(payload), headers=self.headers)
        return r.json() # OK


    def subeler(self, ilceNo=3401): # Default testing value
        # 5902 Çerkezköy 
        payload=  {'cityID':34,'townID':ilceNo,'unitOnDutyFlag':'null','closestFlag':0}
        url = self.urlGetUnit
        headers = {'content-type': 'application/json','encoding':'utf-8'}
        r = requests.post(url, data=json.dumps(payload), headers=headers)
        return r.json()
        print  r.status_code, r.raw.read()

if __name__ == '__main__':        
    a = Yurtici()
   #print a.ilceler(34) # OK
    print a.subeler()   # NOT OK !!!

【问题讨论】:

    标签: python ajax json


    【解决方案1】:

    凭直觉,我发现'unitOnDutyFlag' 值有问题。在将 python dict 编码为 json 时,如果您希望在输出中使用 null,则应该在 dict 中具有 None 的值。

    换行试试:

    payload = {'cityID':34,'townID':ilceNo,'unitOnDutyFlag':'null','closestFlag':0}
    

    到:

    payload = {'cityID':34,'townID':ilceNo,'unitOnDutyFlag': None,'closestFlag':0}
    

    示例:

    # nulljson.py
    import json
    
    data = {
        'foo': 'null',
        'bar': None
    }
    
    print json.dumps(data)
    

    输出:

    $ python nulljson.py
    {"foo": "null", "bar": null}
    

    注意"foo" 的值是字符串 "null",而不是真正的null 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多