2

我正在开发一个连接到 Web 服务的应用程序,提供带有数据的 json 字符串并接收回复。我使用以下代码,在其中构建 json 并尝试发布它:

def connectToService(request):
    data='foxp3 factor'
    l=[] 
    l.append(data)
    l.append(80)
    l.append(5)
    data=json.dumps({"findCitations":l})
    result = urllib2.urlopen('http://www.example.com/webservice', urllib.urlencode(data))

但它不起作用。我希望来自 web 服务的 json 回复将存储在结果中,然后我会想办法解析它,可能是通过反序列化它。尽管有很多关于它的文献(json、simplejson、HttpPequest)而且它必须非常简单,但我还没有设法做到这一点。有什么解决办法吗?

4

2 回答 2

3

为什么不使用requests 库

payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://www.example.com/webservice", data=payload)
>>> print r.text

其中有效负载是您传递的参数。

希望这会给你一个想法

于 2013-01-11T11:21:52.160 回答
1

您可以使用此代码和一些错误处理想法:

    payload = {'key1': 'value1', 'key2': 'value2'}
    url = "http://www.example.com/webservice"

    try:
        response = requests.post(url, data=payload)

    except requests.exceptions.ConnectionError:
        message = 'This is not the domain we are looking for. URL is: %s' % url
        print e
        sys.exit(1)

    except requests.exceptions.ConnectTimeout:
        message = 'Too slow connection! URL is: %s' % url
        print e
        sys.exit(1)

    except Exception as e:
        message = 'Unknown Error: %(message)s URL is: %(url)s' % {'message': str(e), 'url': url}
        print e
        sys.exit(1)

    else:
        return response.json()
于 2016-02-22T18:57:06.447 回答